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
  Отчёт отправил: 1947. Denis Решено за 15 мин. [Показать отчёт]
Научился: Пока ничему 
Сложности: Найти сокобан онлайн со списком уровней 
Комментарии: в интернете куча сокобанов, только мало тех, где есть список пройденных уровней. Ну или я плохо искал 
2 Сокобан - Подготовка - Картинки и лабиринт 00:04:56 76 чел. ★ 4.9 Done
  Отчёт отправил: 1947. Denis Решено за 5 мин. [Показать отчёт]
Научился: составлять уровни в текстовом файле 
Сложности: Ничего 
Комментарии: У меня уже была готова часть игры, которую писали на бесплатных вебинарах, так что с картинками проблем не возникло. 
3 Сокобан - Редактор - Загрузка 00:33:25 76 чел. ★ 4.9 Done
  Отчёт отправил: 1947. Denis Решено за 30 мин. [Показать отчёт]
Научился: Работе с текстовыми файлами 
Сложности: ничего 
Комментарии: Пока замечаний нет 
4 Сокобан - Редактор - Интерфейс 00:40:37 63 чел. ★ 5 Done
  Отчёт отправил: 1947. Denis Решено за 40 мин. [Показать отчёт]
Научился: Динамическому созданию элементов формы 
Сложности: сложностей не возникло 
Комментарии: Была заготовка сокобана, которая осталась с какого-то бесплатного вебинара. Пришлось создать новый проект =) 
5 Сокобан - Редактор - Редактирование 00:38:33 56 чел. ★ 4.9 Done
  Отчёт отправил: 1947. Denis Решено за 50 мин. [Показать отчёт]
Научился: Выделять код в отдельные функции 
Сложности: ничего 
Комментарии: Немного отрефакторил код. При изменении размеров формы нет надобности хранить 2 переменные для длины и ширины. Оставил 1, сразу вычленив минимальный размер int bs = Math.Min(panel.Width / width, panel.Height / height); Ну а дальше дело техники. 
6 Сокобан - Редактор - Сохранение 00:44:47 52 чел. ★ 4.9 Done
  Отчёт отправил: 1947. Denis Решено за 1 час. 00 мин. [Показать отчёт]
Научился: сохранение уровней 
Сложности: Создание нового уровня во время переключения уровней 
Комментарии: Хороший урок. Только у меня почему то уровень с таким кодом создавался за номером предыдущего. Пришлось увеличивать cur_level_nr + 1. Тогда все заработало. 
7 Сокобан - Редактор - Улучшение 00:29:00 51 чел. ★ 5 Done
  Отчёт отправил: 1947. Denis Решено за 2 час. 00 мин. [Показать отчёт]
Научился: Допиливать свои хотелки 
Сложности: Состыковка статус бара и поля при изменении размеров формы 
Комментарии: Немного переделал стилистику своей будущей игры. Взял спрайты из игры warcraft 2. Сразу не понравился способ изменения размеров уровня. По моему опыту - если дать возможность пользователю ввести данные неправильно - он обязательно введет их неправильно =) Поэтому вместо textbox сделал TrackBar'ы numericUpDownTextBox'ы отдельно на ширину и высоту. Изначально они не видны, а при нажатии на кнопку ресайза - появляются, и уровень масштабируется с учетом новых элементов на форме. Счетчики боксиков и место для их расположения расположил на СтатусБаре в нижней части формы. Там же отображается информация о сохранении уровня. Между стрелками переключения уровней поставил текстбокс ReadOnly для отображения номера уровня и общего количества уровней. Еще добавил горячие клавиши на наши элементы управления. 1 - wall, 2 - abox и т.д. Таким образом не обязательно кликать по ним мышкой, чтобы выбрать текущий, достаточно нажать клавишу.  
8 Сокобан - Создаём свои уровни 00:08:05 49 чел. ★ 4.9 Done
  Отчёт отправил: 1947. Denis Решено за 30 мин. [Показать отчёт]
Научился: Создавать уровни 
Сложности: придумать уровни 
Комментарии: Верхние 2 - это мои, нижний это готовый взял.  
9 Сокобан - Игра - Интерфейс 00:43:45 52 чел. ★ 5 Done
  Отчёт отправил: 1947. Denis Решено за 2 час. 00 мин. [Показать отчёт]
Научился: Изменять загрузочную форму проекта 
Сложности: Все сделать по своему 
Комментарии: Еще конечно ничего не завершено. Но интерфейс сделал похожим на игру. Панель уровня еще не готова, но начало положено. Делал все в старом проекте. Не стал создавать новый. 
10 Сокобан - Игра - Управление 01:06:38 45 чел. ★ 5 Done
  Отчёт отправил: 1947. Denis Решено за 1 час. 00 мин. [Показать отчёт]
Научился: обрабатывать нажатия клавиш  
Сложности: ничего 
Комментарии: Пытался делать немного по другому, в итоге пришлось вернуться к вашему варианту, когда сообразил, что мой подход неверен =) 
11 Сокобан - Решалка - Тестер 00:59:55 39 чел. ★ 5 Done
  Отчёт отправил: 1947. Denis Решено за 1 час. 00 мин. [Показать отчёт]
Научился: Устанавливать курсор в нужном месте консоли. 
Сложности: ничего 
Комментарии: Отличный урок по консольному программированию 
12 Сокобан - Решалка - Мышка 00:53:02 38 чел. ★ 5 Done
  Отчёт отправил: 1947. Denis Решено за 50 мин. [Показать отчёт]
Научился: алгоритму поиска пути 
Сложности: ничего 
Комментарии: Хороший урок. 
13 Сокобан - Решалка - Яблоко 00:44:23 37 чел. ★ 5 Done
  Отчёт отправил: 1947. Denis Решено за 1 час. 00 мин. [Показать отчёт]
Научился: Научил мышку толкать яблоко! 
Сложности: Составить правильный скриншот для урока =) 
Комментарии: Алгоритм поиска пути уже изучал в рамках участия в проекте RussianAiCuo 2013. Правда писал на питоне. Но все равно интересно. 
14 Сокобан - Решалка - Оптимизация 00:11:37 36 чел. ★ 5 Done
  Отчёт отправил: 1947. Denis Решено за 10 мин. [Показать отчёт]
Научился: Оптимизация алгоритма поиска пути 
Сложности: ничего 
Комментарии: Никогда бы не подумал, что можно так просто в разы сократить время работы программы! Удивительно. 
15 Сокобан - Игра - Автоходы 00:42:22 35 чел. ★ 4.9 Done
  Отчёт отправил: 1947. Denis Решено за 1 час. 00 мин. [Показать отчёт]
Научился: Подключать готовые классы 
Сложности: Найти ошибку, которая ломала все решалку для ящика. Оказалось, Ошибка в функции InRange, которая в конце возвращала всегда true вместо false. 
Комментарии: Крутая штука - автоходы! Кстати, забыл написать раньше. Большие уровни долго перерисовываются, но если перед циклом в процедуре InitPicture сделать панель невидимой, а после цикла вернуть обратно, уровень перерисовывается гораздо быстрее.  
16 Сокобан - Редактор - На двоих 00:31:57 33 чел. ★ 5 Done
  Отчёт отправил: 1947. Denis Решено за 3 час. 00 мин. [Показать отчёт]
Научился: Переделывать редактор под 2-ух игроков 
Сложности: Сделать свои доработки 
Комментарии: Мои доработки: 1. Сделал добавление элементов с зажатой кнопкой мыши. 2. Сделал добавление элементов прямоугольником с зажатым shift. 3. Сделал добавление элементов закрашенным прямоугольником с зажатым ctrl. 4. Сделал историю изменений, с возможностью отмены сочетанием клавиш ctrl + z 
17 Сокобан - Игра - На двоих 00:15:40 33 чел. ★ 5 Done
  Отчёт отправил: 1947. Denis Решено за 15 мин. [Показать отчёт]
Научился: Переделывать игру для игры вдвоем 
Сложности: ничего 
Комментарии: Короткий, интересный урок 
18 Сокобан - Телефон - TCP/IP протокол 00:47:44 44 чел. ★ 5 Done
  Отчёт отправил: 1947. Denis Решено за 1 час. 00 мин. [Показать отчёт]
Научился: Обмениваться данными по сети 
Сложности: ничего 
Комментарии: Отличный урок. Сетевое взаимодействие - то что надо! 
19 Сокобан - Игра - На двоих по сети 00:56:59 32 чел. ★ 5 Done
  Отчёт отправил: 1947. Denis Решено за 3 час. 00 мин. [Показать отчёт]
Научился: Передавать данные по сети 
Сложности: Реализовать обмен данными через сокеты 
Комментарии: Переписал наш класс Phone, чтобы программа работала через сокеты. По сути то же, только работает вроде более стабильно и передаю строки. Так можно и мини час сделать!!! =) Еще переделал автоходы, они работают у каждого для своего персонажа. Ну и картинку для 2 персонажа поменял. Ну а то, что они при хотьбе разворачиваются в нужную сторону, это конечно не окончательный вариант. В идеале нужно сделать плавное перемещение. Благо картинок для анимации хватает. 
20 Сокобан - Завершение 00:37:44 31 чел. ★ 5 Done
  Отчёт отправил: 1947. Denis Решено за 1 час. 00 мин. [Показать отчёт]
Научился: ничему новому 
Сложности: Найти ответ, что ресурсы нельзя изменять кодом 
Комментарии: Пришлось отказаться от внедрения файлов с уровнями в ресурсы, ибо редактор у меня находится в этом же проекте, а ресурсы один раз закинул, и изменять больше нельзя. 
21 ФИНАЛЬНЫЙ урок. Видео-обзор проекта Сокобан 00:23:23 21 чел. ★ 5 Done
  Отчёт отправил: 1947. Denis Решено за 30 мин. [Показать отчёт]
Научился: как всегда, записывать видео! 
Сложности: придумать сценарий обзора 
Комментарии: Кажется, что обзор немного скомкан. Не показал сетевую игру. Вообще, игра еще не завершена. Дорабатывать можно сколько угодно долго =) Например, в мыслях сделать режим Кампании, сохранение прогресса и много чего еще. Спасибо Евгению Витольдовичу за то, что дал базу для написания таких простых, и вместе с тем, не простых игр. 
Видеообзор: https://youtu.be/5xPrVrlNoOA
22 VIP. Бот для игры БАЛДА 01:22:57 4 чел. ★ 5 $
  Итого:   22 видеоурока общей продолжительностью 13 час. 48 мин. 4 чел. ★ 4.97  
  Финалисты:   zhikharevav,   Ильшат,   Максим,   Новопашин Владимир .

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




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

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

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

Ты в любой момент сможешь отписаться от рассылки.
Научился: Записывать видеообзоры
Трудности: Ничего
Всё отличо
Смотреть видеозапись: https://youtu.be/8NNJY7PPADI
Научился: Ещё быстрее записывать видео
Трудности: Пройти Ключ в прямом эфире.
Я очень рад, что успешно финишировал :)
Смотреть видеозапись: https://youtu.be/ysvWpiLgsyM