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
  Отчёт отправил: 4780. Дмитрий Решено за 3 час. 00 мин. [Показать отчёт]
Научился: 1) играть в Сокобан)  
Сложности: 10й уровень игры 
Комментарии: интересная игра, что сказать) 
2 Сокобан - Подготовка - Картинки и лабиринт 00:04:56 76 чел. ★ 4.9 Done
  Отчёт отправил: 4780. Дмитрий Решено за 10 мин. [Показать отчёт]
Научился: поиску картинок 
Сложности: ничего 
Комментарии: =) 
3 Сокобан - Редактор - Загрузка 00:33:25 76 чел. ★ 4.9 Done
  Отчёт отправил: 4780. Дмитрий Решено за 1 час. 00 мин. [Показать отчёт]
Научился: 1) проектировать уровни игры в текстовом редакторе 2) считывать файл в массив 3) загружать уровни из текстового редактора в соответствующий класс программы согласно Enum Cell при помощи метода ReadLevelHeader 
Сложности: ReadLevelHeader(lines[curr], out curr_level_nr, out width, out height); переменные out , зачем они. 
Комментарии: Хороший способ считывать уровни из текстового файла, насколько я понимаю, можно как-то то же самое организовать при помощи базы данных? 
4 Сокобан - Редактор - Интерфейс 00:40:37 63 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 5 час. 00 мин. [Показать отчёт]
Научился: 1) использовать панель инструментов ToolStrip 2)Загружать изображения в объект PictureBox 2) заполнять панель на форме объектами в зависимости от заданных параметров 
Сложности: SokobanEditor_Resize! 
Комментарии: не получилось настроить SokobanEditor_Resize. Он лезет вперед всего, даже вперед SokobanEditorForm_Load(object sender, EventArgs e). Вызывается конструктором при инициализации формы строчкой this.ResumeLayout(false); Из-за этого не вызываются функции InitPictures(), LoadPictures() и идет ошибка. Запустить можно только указав их внутри SokobanEditor_Resize. 
5 Сокобан - Редактор - Редактирование 00:38:33 56 чел. ★ 4.9 Done
  Отчёт отправил: 4780. Дмитрий Решено за 1 час. 00 мин. [Показать отчёт]
Научился: 1) увеличивать и уменьшать карту редактора 2) отображать на карте редактора выбранную картинку из панели инструментов 3) проверять уровень на выполнение всех заданных условий перед сохранением 
Сложности: 1) определение места клика: x = ((Point)((PictureBox)sender).Tag).X; 2) вот такая конструкция присваивания - сравнения: toolWall.Checked = currentCell == Cell.wall; 
Комментарии: использовал panel.Controls.Clear(), чтобы решить проблему со старыми картинками при перерисовке в момент увеличения/уменьшения размера формы.  
6 Сокобан - Редактор - Сохранение 00:44:47 54 чел. ★ 4.9 Done
  Отчёт отправил: 4780. Дмитрий Решено за 2 час. 30 мин. [Показать отчёт]
Научился: 1) сохранять уровень в текстовом файле с учетом разной размерности уровней 2) переходить между уровнями 3) добавлять новый уровень при его отсутствии в момент перехода по уровню 
Сложности: Сохранение уровня и пересчет строк. 
Комментарии: Приятно, когда все работает. Создание нового уровня можно было бы вынести в отдельную функцию. 
7 Сокобан - Редактор - Улучшение 00:29:00 53 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 1 час. 00 мин. [Показать отчёт]
Научился: 1) изменять размер лабиринта через игровое поле 2)заполнение прямоугольных областей лабиринта однотипными объектами 3) отображать счетчики ящиков и мест для них 
Сложности: private void ShowCell(int x, int y, Cell c)//рекурсивная функция 
Комментарии: редактор сам по себе уже - игра) 
8 Сокобан - Создаём свои уровни 00:08:05 51 чел. ★ 4.9 Done
  Отчёт отправил: 4780. Дмитрий Решено за 1 час. 00 мин. [Показать отчёт]
Научился: рисовать уровни в редакторе 
Сложности: отсчитывать сколько уровней уже нарисовано 
Комментарии: добавить потом 1) combo_box - текущий уровень, чтобы было видно какой уровень, сколько их всего и можно было выбирать 2) кнопка "создать новый уровень" - добавление пустого уровня в конец с присвоением ему соответствующего порядкового номера 
9 Сокобан - Игра - Интерфейс 00:43:45 52 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 2 час. 00 мин. [Показать отчёт]
Научился: 1) вызывать одну форму из другой 2)заполнять уровень объектами PictureBox 3) отображать статусы прохождения уровня в панели инструментов 
Сложности: делегаты, зачем они нужны, если есть классы и методы. 
Комментарии: все работает, пока все ок) 
10 Сокобан - Игра - Управление 01:06:38 46 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 3 час. 00 мин. [Показать отчёт]
Научился: использование вспомогательных массивов для реализации слоев в программе 
Сложности: втянуться в работу после большого перерыва 
Комментарии: использование слоев - мне очень понравилось! интересно как этот вопрос решен в морском флоте. скоро узнаю) 
11 Сокобан - Решалка - Тестер 00:59:55 40 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 2 час. 00 мин. [Показать отчёт]
Научился: 1) как хранить и загружать карту из текстового файла 2) логике перемещения объекта по строковому шаблону, обработке условий 
Сложности: особо ничего 
Комментарии: здорово, когда есть визуализация алгоритма, много становится очевидным (буквально =) 
12 Сокобан - Решалка - Мышка 00:53:02 39 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 2 час. 00 мин. [Показать отчёт]
Научился: 1. находить кратчайший путь в лабиринте поиском вширь 
Сложности: алгоритм проверки и прокладывания пути 
Комментарии: мощная вещь)) 
13 Сокобан - Решалка - Яблоко 00:44:23 38 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 2 час. 00 мин. [Показать отчёт]
Научился: находить решение для перемещения элемента Я в элемент Ф с места С при помощи другого элемента М. 
Сложности: Как все это работает вместе 
Комментарии: отличный алгоритм! кажется, что мышка "думает" как человек. по-факту перебираются все состояния, что очень много. посчитал, сколько раз мы заходим в очередь для простого лабиринта (как на скриншоте) - 545 раз. 
14 Сокобан - Решалка - Оптимизация 00:11:37 38 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 30 мин. [Показать отчёт]
Научился: использование массивов значительно быстрее использования Dictionary, который в свою очередь значительно быстрее использования Queue 
Сложности: программа даже стала проще чем была) 
Комментарии: новая версия программы выполняется очень быстро, а старую я перезаписал пока видеоурок смотрел.  
15 Сокобан - Игра - Автоходы 00:42:22 37 чел. ★ 4.9 Done
  Отчёт отправил: 4780. Дмитрий Решено за 2 час. 00 мин. [Показать отчёт]
Научился: использовать в программе классы, созданные ранее. проходить сокобан одной левой) 
Сложности: модификация классов при их переносе в проект. Еще такой момент, получается, что список Queue можно модифицировать в теле цикла, т.е. это такой аналог рекурсии? 
Комментарии: просто замечательно выглядит, как будто сокобанщик сам такой умный) 
16 Сокобан - Редактор - На двоих 00:31:57 33 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 1 час. 30 мин. [Показать отчёт]
Научился: модифицировать ранее созданный код 
Сложности: искать старые ошибки в коде 
Комментарии: =>[] ................X 
17 Сокобан - Игра - На двоих 00:15:40 33 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 30 мин. [Показать отчёт]
Научился: управлять с клавиатуры одновременно двумя сокобанщиками 
Сложности: особо ничего 
Комментарии: =) 
18 Сокобан - Телефон - TCP/IP протокол 00:47:44 44 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 1 час. 20 мин. [Показать отчёт]
Научился: создавать соединение и передачу данных по сети между двумя компьютерами при помощи библиотек System.Net и System.Net.Sockets. 
Сложности: новые классы, новая терминология 
Комментарии: полезная вещь)) 
19 Сокобан - Игра - На двоих по сети 00:56:59 32 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 2 час. 00 мин. [Показать отчёт]
Научился: подключать класс для передачи данных по сети в готовую программу и соединять два компьютера в игре со стороны клиента или сервера 
Сложности: большое количество уже созданного кода немного давит и мешает быстро понять, что куда записать или исправить, чтобы заработало 
Комментарии: Отличная игра получилась, спасибо! Такой момент:если соединять 2 компьютера в локальной сети то IP, соответственно, тоже должен быть локальный(как роутер раздает), отметил на скриншотах. 
20 Сокобан - Завершение 00:37:44 31 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 1 час. 00 мин. [Показать отчёт]
Научился: модифицировать программу для включения различных режимов игры 
Сложности: обилие кода, можно запутиться, где какие переменные 
Комментарии: удивительно, но все работает. особенно радует волна) 
21 ФИНАЛЬНЫЙ урок. Видео-обзор проекта Сокобан 00:23:23 21 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 2 час. 00 мин. [Показать отчёт]
Научился: записывать видео) 
Сложности: ничего 
Комментарии: Спасибо, интересный был курс! 
Видеообзор: https://youtu.be/IpmthS185SY
22 VIP. Бот для игры БАЛДА 01:22:57 4 чел. ★ 5 $
  Итого:   22 видеоурока общей продолжительностью 13 час. 48 мин. 4 чел. ★ 4.97  
  Финалисты:   zhikharevav,   Ильшат,   Максим,   Новопашин Владимир .

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




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

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

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

Ты в любой момент сможешь отписаться от рассылки.
Научился: Создавать видеообзоры, и Самое главное доводить проекты до конца!
Трудности: Всего и не перечислишь. Все организовать для записи. записать видео с первого раза.
Я рад что выбрал этот проект и сделал его полностью! Это мой первый проект и я верю что будут еще! Хоть и вышла накладка с видео, но я решил так и оставить. УРА! Пишите код, каждый день, ни дня без кода, и вы всего достигнете! Не знаю как приложить архив.
Смотреть видеозапись: https://youtu.be/oc-iAxFFlZE
Научился: Записывать видеообзоры
Трудности: Ничего
Всё отличо
Смотреть видеозапись: https://youtu.be/8NNJY7PPADI