C# обучение для чайников

Формула программиста
основатель — Волосатов Евгений Витольдович

Игра СОКОБАН

Приглашаю пройти видеокурс по созданию полноценной игровой программы СОКОБАН.
Мы вместе, за руку, пройдём по всем этапам создания законченной интеллектуальной игры.
1. Создание редактора уровней.
2. Придумывание этих самых уровней.
3. Создание собственно игры.
4. Решение олимпиадной задачки для добавления ИИ.
5. Переделка игры в режим "на двоих".
6. Написание класса Phone для связи двух программ по сети.
7. Создание сетевой версии игры Sokoban.
8. Оформление итоговой программы.

Открытие 27 ноября в 18:00

Название: Игра Сокобан
Объём: 21 видеоурок.
Доступ: 30 дней

5,000 руб


Для подписки на пакет необходимо авторизоваться.

Список уроков | фото | видео

# Название видеоурока Решило Рейтинг Доступ
1 Сокобан - Вступление 00:11:09 114 чел. ★ 4.8 Done
  Отчёт отправил: 8005. Александр Решено за 1 час. 20 мин. [Показать отчёт]
Научился: играть в Сокобан 
Сложности: собственно решать уровни ) 
Комментарии: Игра классная - надо делать 
2 Сокобан - Подготовка - Картинки и лабиринт 00:04:56 76 чел. ★ 4.9 Done
  Отчёт отправил: 8005. Александр Решено за 40 мин. [Показать отчёт]
Научился: изменять размер изображения в Пэинт :) 
Сложности: ничего 
Комментарии: Продолжаем. Если не понравится как картинки будут сочетаться друг с другом, конечно заменю 
3 Сокобан - Редактор - Загрузка 00:33:25 76 чел. ★ 4.9 Done
  Отчёт отправил: 8005. Александр Решено за 1 час. 20 мин. [Показать отчёт]
Научился: работе с перечислениями. как можно хранить информацию просто в блокноте и читать ее оттуда. 
Сложности: все далось спокойно 
Комментарии: когда делал скриншот с содержанием матрицы - понял, что никогда не пользовался вкладками обозревателями переменных. Как их Открывать то? 
4 Сокобан - Редактор - Интерфейс 00:40:37 63 чел. ★ 5 Done
  Отчёт отправил: 8005. Александр Решено за 40 мин. [Показать отчёт]
Научился: узнал как зять длины измерений матрицы. Узнал о "фишках" при динамическом составлении 
Сложности: ничего 
Комментарии: Первый раз такое *матершинное слово* получилось, что кровь из глаза потекла. Дизайнер из меня тот еще. Подыскал картинки более ,как мне показалось ,подходящие друг к другу )) 
5 Сокобан - Редактор - Редактирование 00:38:33 56 чел. ★ 4.9 Done
  Отчёт отправил: 8005. Александр Решено за 1 час. 30 мин. [Показать отчёт]
Научился: практика с матрицами. компоненты ToolStrip. DropDownButton 
Сложности: все далось 
Комментарии: двигаемся дальше 
6 Сокобан - Редактор - Сохранение 00:44:47 52 чел. ★ 4.9 Done
  Отчёт отправил: 8005. Александр Решено за 3 час. 00 мин. [Показать отчёт]
Научился: Научился изменять размер одномерного массива и работе с ним, при записи, стирании информации 
Сложности: Было сложным написать ту самую функцию SaveLevel(); Думал как то легче будет, а прилип на ней 
Комментарии: Все таки сделал все "нормально ". чтоб загружал пустой уровень если мы находимся в конце списка, чтоб вообще если не нашел уровней загружал нам пустой уровень для работы. И все корректно сохраняет. Подправил код, с учетом тех замечаний , что были на вебинаре. 
7 Сокобан - Редактор - Улучшение 00:29:00 51 чел. ★ 5 Done
  Отчёт отправил: 8005. Александр Решено за 2 час. 00 мин. [Показать отчёт]
Научился: новым событиям мышки. и улучшил навыки при работе с массивами 
Сложности: Прокопался я конкретно с "улчшением" этим так называемым. Все хотел добавить, чтобы можно было зажать правую кнопку мышки , вести по полю и объекты рисуются. Долго проискал так и не смог. Сделал , что по двойному щелчку такой режим активным становится и двойным щелчком он же выключается. Рисуется гораздо быстрее , конечно. Очень долго провозился с кнопкой" полного удаления уровня". Нюансы появлялись как грибы после дождя. Нужно было переписать все "шапки" с понижением в них значения уровня на 1. Нужно было отслеживать что мы удаляем, уже записанный в файл уровень или еще нет и тд. 
Комментарии: Не думал не гадал я что на редактор столько времени уйдет :) Мне если честно первые три уровня оригинального сокобана совсем не составило труда "набить" в блокноте. Но зато на составлении этого самого редактора много пошевелил извилинами, что не может не радовать. 
8 Сокобан - Создаём свои уровни 00:08:05 49 чел. ★ 4.9 Done
  Отчёт отправил: 8005. Александр Решено за 30 мин. [Показать отчёт]
Научился: Нашёл ошибку в редакторе во время рисования уровней. исправил 
Сложности: ничего 
Комментарии: Своих, собственно придуманных уровней не сделал. Все уровни из классического сокобана. В дальнейшем добавлю все, что есть. 
9 Сокобан - Игра - Интерфейс 00:43:45 52 чел. ★ 5 Done
  Отчёт отправил: 8005. Александр Решено за 1 час. 20 мин. [Показать отчёт]
Научился: создавать делегаты.  
Сложности: ничего 
Комментарии: Эх на этом уроке все таки зародились задумки что должно быть в моём будущем Сокобане. Надо делать :) И переделал я все таки некоторые картинки на более мультяшные и не HandMade. вроде больше нравится стало 
10 Сокобан - Игра - Управление 01:06:38 45 чел. ★ 5 Done
  Отчёт отправил: 8005. Александр Решено за 16 час. 00 мин. [Показать отчёт]
Научился: У меня во время прохождения этого урока, отпочковалась , мне кажется, дополнительная масса на затылке где-то 
Сложности: Сам по себе урок не из простых, с его алгоритмами движения, наложениями матриц, от многое добавлял, что не могло пройти без осложнений 
Комментарии: Когда смотрел на кол-во уроков думал буду все свои задумки плавно вводить в игру. А получилось , что на этом уже уроке нужно создать полноценную игру на одного человека. А далее будут уже крутые "фичи". От себя сделал "игру" человека под именем с сохранением его результатов. Ввёл время, за которое человек прошёл уровень. Ввел кол-во попыток игрока на данном уровне. При загрузке игры снова и вводе своего ника - дается доступ к уровню, до которого данный игрок дошёл. Сделал таблицу рекордов. Где отображаются лучшие результаты и собственно игрока. Сделал кнопку отмены хода. Думал тяжелее она дастся, хорошо , что не так, под конец уже неплохо" подустал". Реализовал на основе такой структуры данных как Stack. На каждом ходу Пушит туда матрицу наших клеток. А при "отмене хода" достает верхнюю. Принцип LIFO оказался как нельзя кстати. Теперь можно со споконой душой приступать к апргрейду игры , ботами, решалками и прочим :) Спасибо! 
11 Сокобан - Решалка - Тестер 00:59:55 40 чел. ★ 5 Done
  Отчёт отправил: 8005. Александр Решено за 2 час. 00 мин. [Показать отчёт]
Научился: Вспомнил про работу с консолью. Улучшил понимание алгоритма движения в Сокобане 
Сложности: ничего 
Комментарии: Сделал все таки, чтобы у нас мышка и яблоко не затирали после себя домик. Добавил пару проверок. И самое главное, Мне кажется что в программе, написанной в видеоуроке - ошибка. Согласно алгоритму, метод MoveMouse возвращает false если мы пытаемся идти в стенку, и результат "неверное решение". Хотя правилами игры не запрещено "долбиться" в стенку. В своей программе я вроде реализовал возможность "пытаться пройти в стенку". Главное это чтобы яблоко оказалось в доме :)) Спасибо  
12 Сокобан - Решалка - Мышка 00:53:02 38 чел. ★ 5 Done
  Отчёт отправил: 8005. Александр Решено за 1 час. 30 мин. [Показать отчёт]
Научился: узнал о волновом лабиринте. Думал реализация будет наподобии как в "боте для балды" рекурсией. А тут вон око как с "очередью" можно. Классно 
Сложности: собственной сам волновой алгоритм 
Комментарии: Хороший урок , спасибо. Я так понимаю в ширину он называется , потому что мы во все стороны "разрастаемся" плавно, а ни как в случае с рекурсией в одну сторону до упора. 
13 Сокобан - Решалка - Яблоко 00:44:23 37 чел. ★ 5 Done
  Отчёт отправил: 8005. Александр Решено за 2 час. 00 мин. [Показать отчёт]
Научился: улучшил понимание алгоритма вширь. 
Сложности: пытался сам додуматься как оптмизировать. Код укоротился, но на работе программы не отразилось 
Комментарии: что же там в оптимизации 
14 Сокобан - Решалка - Оптимизация 00:11:37 37 чел. ★ 5 Done
  Отчёт отправил: 8005. Александр Решено за 30 мин. [Показать отчёт]
Научился: Узнал о скоростях работы List<> и классов , которые работают c хэш-кодами. А про массив, вообще супер. поиска как такого т.е. нет. идёт сразу обращение в нужный адрес. 
Сложности: Понять и осмыслить, представить в пространстве 4-х мерный массив. и не Думаю что у меня это получилось. 
Комментарии: Такой короткий , но такой ёмкий урок, и ведь одна из главных тем программирования - быстродействие 
15 Сокобан - Игра - Автоходы 00:42:22 35 чел. ★ 4.9 Done
  Отчёт отправил: 8005. Александр Решено за 2 час. 00 мин. [Показать отчёт]
Научился: подключать классы стало очень легко. Полезным было изменять некоторые внутренности после слияния, чтобы всё работало , при этом не затронуть других :) 
Сложности: опять досадную ошибку сделал и долго ее отлавливал, с массивами. при передаче массива в другой класс, в его конструкторе написал this.map = map. А нет, и тут оказывается только ссылка в класс передается, и при изменении этого массива в этом классе, в исходном классе он также меняется. 
Комментарии: функция , конечно , вещь :) 
16 Сокобан - Редактор - На двоих 00:31:57 33 чел. ★ 5 Done
  Отчёт отправил: 8005. Александр Решено за 2 час. 00 мин. [Показать отчёт]
Научился: всё также, опыт в переделывании прошлого кода. 
Сложности: придумать свой уровень 
Комментарии: Сделал всё таки не второй редактор, а один, который предлагает выбор "на 1 или 2 игроков создавать карты". С соответствующими загрузкой и сохранением карт. Все карты Евгений Витольдовича нагло слизал. Свою постарался придумать. В голове вроде решает , по факту посмотрим :)) Старался сделать, что бы без кооперации ни шагу не сделать 
17 Сокобан - Игра - На двоих 00:15:40 33 чел. ★ 5 Done
  Отчёт отправил: 8005. Александр Решено за 3 час. 00 мин. [Показать отчёт]
Научился: всё тому же. пользоваться готовым кодом, переделывать его под другие нужды. 
Сложности: Возникали сложности у меня с моей таблицей рекордов. адаптировал ее под игру на двоих. 
Комментарии: классный опыт не писать с нуля, а пользоваться готовым. Стараешься подумать , чтобы минимальные добавления привели в желаемому. 
18 Сокобан - Телефон - TCP/IP протокол 00:47:44 44 чел. ★ 5 Done
  Отчёт отправил: 8005. Александр Решено за 2 час. 00 мин. [Показать отчёт]
Научился: Основные принципы ООП так сказать затронуты здесь :) хотелось бы практиковаться с ними. А касаемо урока - всё новое. Разумеется передача данных одна из интереснейших тем в программировании, дали "понюхать" верхушку этой темы в уроке, какой же там "айсберг" внизу... 
Сложности: Сложным было понять, как это вообще работает, что перед чем создавать и куда передавать. Напомнило когда первый раз создавал "графику" :)) Там тоже куча карандашей , битмэпов , графиков , имаджей . Надеюсь со времени устаканится 
Комментарии: Урок интереснейший, по кол-ву новой информации в нём. Единственное , что я не понял, зачем мы сделали делегат, и вынесли метод по получению Информацию из класса фон. Специально ,чтобы разобраться где программа и когда кидает исключения, где ожидаются подключения, где чего открывается, поставил перед собой задачу сделать всё в классе Phone, без делегата. Очень понравилось "шагать" по программе. Я очень хотел добавить помимо возможности передавать число еще и передавать цвет этого числа. Но увы, так и не осилил. Если кто - может - подскажите, как отправлять посылочку с несколькими полями. 
19 Сокобан - Игра - На двоих по сети 00:56:59 32 чел. ★ 5 Done
  Отчёт отправил: 8005. Александр Решено за 6 час. 00 мин. [Показать отчёт]
Научился: и снова изменять имеющийся код. Улучшил понимание при обмене данными 
Сложности: Волосы сначала дыбом встали, как подумал я, что мне делать со временем, откатом хода, таблицами рекордов, у меня же весь код был на проверках имени, считывании с файла текущих уровней и тд. Для меня пока нереально сделать, чтобы у обоих уровень по считыванию загружался одинаково, сохранялось по какому либо результату , поэтому Ифами обошёл весь код - где привязаны имена с результатми 
Комментарии: Все режимы игры сделаны в одном окне. Для игры по сети оставил возможность играть с автоходами ( мышкой ). Очень понравилась идея решения с передачей команд "таймеру". Пытался решить , вызывая в отдельном потоке методы, чтобы не ждал "приёмщик байтов". Но вопросы вылезали как грибы, побеждая одну - лезет вторая. Например, оказывается ( я не знал) к компонентам формы нельзя обращаться из потока, в котором они не были созданы. Это почитал - нашёл - отключил. Далее - нельзя делать родителем объект тех элементов , которые созданы в другом потоке... В общем плюнул я, сделал Как в уроке - на Таймер. И все равно очень доволен :) А учить надо море всего, чем дальше углубляешься - тем больше понимаешь что меньше знаешь. Как во всём :) Спасибо 
20 Сокобан - Завершение 00:37:44 31 чел. ★ 5 Done
  Отчёт отправил: 8005. Александр Решено за 6 час. 00 мин. [Показать отчёт]
Научился: танцевать с бубном , не иначе 
Сложности: попытаться сделать хоть что-то , чтобы сетевая игра была хоть чуточку стабильнее 
Комментарии: В общем немало времени я еще провёл около этого кода, в попытках сделать сетевую игру стабильнее, если хотя бы не стабильнее, то логичнее. Чтобы один игрок не мог начинать двигаться и играть, пока не подсоединится второй. Синхронизация данных - это космос для меня на данном этапе. Поэтому сделал , при срыве соединения, уведомление, что второй игрок отключился, и принудительное закрытие формы лабиринта первому. Всё к коду больше не притронусь :))) чтобы не сломать. Всё работает! Быть может еще звуки только добавлю, но это не должно никак влиять. Это финиш! Спасибо 
21 ФИНАЛЬНЫЙ урок. Видео-обзор проекта Сокобан 00:23:23 21 чел. ★ 5 Done
  Отчёт отправил: 8005. Александр Решено за 30 мин. [Показать отчёт]
Научился: практика в видеообзорах 
Сложности: Честно, это было с третьего раза. Первые два не пошли по разным причинам. И третий раз уже прожёвывал слова и торопился. 
Комментарии: Большое спасибо за данный курс. Честно, он превзошёл мои ожидания. Прямо конкретно в точку, что надо было для дальнейшего планомерного изучения мною программировония. Не легко и не сверхсложно. 
Видеообзор: https://youtu.be/7vRP5yFHge0
22 VIP. Бот для игры БАЛДА 01:22:57 4 чел. ★ 5 $
  Итого:   22 видеоурока общей продолжительностью 13 час. 48 мин. 4 чел. ★ 4.97  
  Финалисты:   zhikharevav,   Ильшат,   Максим,   Новопашин Владимир .

Начинаем практику по языку C#




Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.
Научился: Доводить курс до конца.
Трудности: записывать ночью
Замечательный курс. Тут и создание классов, и их взаимодействие - очень было полезно все это сделать.
Смотреть видеозапись: https://youtu.be/Q0CazQPvgNg