Изучение c# на примерах

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

Игра Тетрис

Цель игры - набрать как можно больше очков.
Очки начисляются при заполнении
Полностью горизонтальной линии фигурами.
Тогда эта линия уберется и зачисляться очки.

Это 20 уроков по написанию игры Тетрис,
Мы пройдемся по всем этапам разработки.
Посмотрим что нам будет необходимо,
Чтобы легко, удобно и быстро управлять игрой.
Напишем несколько универсальных методов,
Которые помогут в работе с массивами.

Что ты получишь, пройдя курс:
+ Собственную игру Тетрис
+ Знания, для перемещения блоками элементов
+ Навык разработки динамических игр

Различные вариации игры
1. Классический
2. На прохождение
3. Классический вдвоем кооператив
4. Классический вдвоем каждый сам за себя
5. Вдвоем друг против друга

Объём: 17 видеоуроков
Время: 6 часов 28 минут.
Доступ на 30 дней.

4,000 руб.


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

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

# Название видеоурока Решило Рейтинг Доступ
1 Подготовка формы 00:10:54 24 чел. ★ 4.8 Done
  Отчёт отправил: 10670. Сергей Соколов Решено за 11 мин. [Показать отчёт]
Научился: Особо ничему. Настроили форму для дальнейшей работы 
Сложности: все просто 
Комментарии: поглядим что дальше. 
2 Игровая доска 00:22:02 20 чел. ★ 4.8 Done
  Отчёт отправил: 10670. Сергей Соколов Решено за 25 мин. [Показать отчёт]
Научился: Заполнять panel picturebox-ами в цикле=) По поводу формулы. Можно пойти по простому пути взять ширину панели, которую мы получили при инициализации класса и разделить на size_x. Или более сложны. Получить ширину по x и также разделить высоту панели на size_y. Взять тот размер что меньше. 
Сложности: все просто 
Комментарии: =) 
3 Логика игры 00:17:08 17 чел. ★ 4.9 Done
  Отчёт отправил: 10670. Сергей Соколов Решено за 20 мин. [Показать отчёт]
Научился: создавать фигуры тетриса 
Сложности: все просто 
Комментарии: нет замечаний 
4 Класс Фигур 00:17:22 11 чел. ★ 5 Done
  Отчёт отправил: 10670. Сергей Соколов Решено за 23 мин. [Показать отчёт]
Научился: Создавать класс фигур =)  
Сложности: пока всё кажется простым. 
Комментарии: =) 
5 Движение фигур 00:22:20 11 чел. ★ 5 Done
  Отчёт отправил: 10670. Сергей Соколов Решено за 33 мин. [Показать отчёт]
Научился: Передвигать фигуры. Новая фигура должна появиться либо после того как текущая достигнет нижних координат стакана, либо когда следующее передвижение фигуры попадает на уже занятые координаты. 
Сложности: ответить на вопрос.  
Комментарии: =) 
6 Разноцветные фигуры 00:21:38 11 чел. ★ 5 Done
  Отчёт отправил: 10670. Сергей Соколов Решено за 25 мин. [Показать отчёт]
Научился: Раскрашивать фигуры. Определять когда их не нужно двигать 
Сложности: пока всё просто 
Комментарии: =) 
7 Поворачиваем фигуры 00:16:14 11 чел. ★ 5 Done
  Отчёт отправил: 10670. Сергей Соколов Решено за 45 мин. [Показать отчёт]
Научился: Поворачивать фигуры =) 
Сложности: да всё пока просто 
Комментарии: =) 
8 Управление 00:29:18 10 чел. ★ 5 Done
  Отчёт отправил: 10670. Сергей Соколов Решено за 40 мин. [Показать отчёт]
Научился: Для того чтобы отключить управление при паузе я в методе проверки нажатия клавиш выделил проверку на нажатие space в отдельный if и поставил его над свитчем. Добавил глобальную переменную isPaused При нажатии space состояние переменной меняется на противоположное и показывается лейбл пауза. При потере фокуса формой аналогично переменной присваевается значение true и появляется лейбл После возврата фокуса форме необходимо нажать space для продолжения игры.  
Сложности: все просто 
Комментарии: =) 
9 Мини-панель 00:22:10 10 чел. ★ 5 Done
  Отчёт отправил: 10670. Сергей Соколов Решено за 25 мин. [Показать отчёт]
Научился: map и map_bak не нужны потому что в классе board они используются для хранения не подвижных фигур на одном слое и для хранения движущейся фигуры на другом. в мини панели требуется только отображение одной фигуры, поэтому эти массивы не нужны. 
Сложности: все просто 
Комментарии: =) 
10 Удаляем строки 00:32:37 9 чел. ★ 5 Done
  Отчёт отправил: 10670. Сергей Соколов Решено за 55 мин. [Показать отчёт]
Научился: удалять строку из массива и добавлять первой строкой массива строку с нулями 
Сложности: все просто 
Комментарии: не очень понял зачем нужен break в случае если нашлась строка для удаления. Ведь в массиве могут быть еще строки и они удаляться только при следующем рефреше. удаление и добавление строки в массив писал по памяти, поэтому они могут отличаться от того что на видео. но вроде бы работает. =) 
11 Проигрыш 00:14:54 8 чел. ★ 4.9 Done
  Отчёт отправил: 10670. Сергей Соколов Решено за 40 мин. [Показать отчёт]
Научился: Понял почему на предыдущем уроке был сделан break. Сделал подсчет очков и проигрыш. 
Сложности: Все просто 
Комментарии: всё отлично 
12 Перезапуск игры 00:24:36 8 чел. ★ 5 Done
  Отчёт отправил: 10670. Сергей Соколов Решено за 50 мин. [Показать отчёт]
Научился: Создавать делегат. Понял как проверять фигуру при перевороте. Сделал метод перезапуска игры с выводом вопроса о желании начать заново. Ну вторым вариантом игры логично было бы победа. Но победа в тетрисе это мощно. Хотя, можно предложить считать победой полную очистку поля. Или достижение определенного количества очков. 
Сложности: все просто 
Комментарии: =) 
13 Главное меню 00:24:00 8 чел. ★ 5 Done
  Отчёт отправил: 10670. Сергей Соколов Решено за 50 мин. [Показать отчёт]
Научился: Менять форму которую необходимо открывать при запуске приложения. Закрывать одну форму при закрытии другой. DialogResult я прикрутил еще на предыдущем уроке =) 
Сложности: все просто 
Комментарии: =) 
14 Уровень 1 00:34:28 8 чел. ★ 5 Done
  Отчёт отправил: 10670. Сергей Соколов Решено за 1 час. 10 мин. [Показать отчёт]
Научился: 1. Заполнять нижние ряды мусором. 2. Проверять была ли заполнена нижняя строка. 3. Выводить текущий уровень в название формы, в случае если мы играем на победу 4. При переходе с уровня на уровень сохранять счет и прибавлять новые очки уже к нему. 5. При нажатии Enter, ронять фигуру. 
Сложности: в принципе сложного ничего, долго искал ошибки из-за которых работало не так как хотелось. 
Комментарии: =) 
15 Игра вдвоем кооператив 00:20:16 8 чел. ★ 5 Done
  Отчёт отправил: 10670. Сергей Соколов Решено за 45 мин. [Показать отчёт]
Научился: Добавил условия запуска вдвоем. Дописал процедуру запуска на двоих. Вроде бы оптимизировал выбор хода игрока. =) 
Сложности: перестать играть в тетрис уговаривая себя что я просто проверяю как работает, и начать делать урок =) 
Комментарии: все отлично 
16 Игра вдвоем каждый сам за себя 00:28:37 8 чел. ★ 5 Done
  Отчёт отправил: 10670. Сергей Соколов Решено за 55 мин. [Показать отчёт]
Научился: Копировать формы и исправлять копию так чтобы всё работало =) Для второго игрока мы создаём новый экземпляр уже существующего класса Board потому что второй игрок ничем не отличается от первого =) 
Сложности: все просто 
Комментарии: а вопросов пока и нет 
17 Баттл начинается! 00:29:46 5 чел. ★ 5 Done
  Отчёт отправил: 10670. Сергей Соколов Решено за 1 час. 00 мин. [Показать отчёт]
Научился: Написал процедуру добавления мусора в нижних строках стакана. Мусор добавляется по предложенной формуле =) По нажатию на клавишу ноль на цифровом блоке фигура меняется на случайную. 
Сложности: все просто 
Комментарии: отличная игра получается =) 
18 ФИНАЛЬНЫЙ УРОК 4 чел. ★ 5 Done
  Отчёт отправил: 10670. Сергей Соколов Решено за 40 мин. [Показать отчёт]
Научился: Спасибо за отличный видео курс. На этом курсе я повторил теорию ООП. Научился работать с массивами. Научился обрабатывать нажатия клавиш и многому другому. 
Сложности: в принципе ничего сложного не вспомню. 
Комментарии: Еще больше таких отличных курсов =) 
Видеообзор: https://youtu.be/SxKRYpR0OL0
19 VIP урок. Angry Birds или проблемы красивых игр 00:20:07 4 чел. ★ 5 Done
  Отчёт отправил: 10670. Сергей Соколов Решено за 45 мин. [Показать отчёт]
Научился: Использовать картинки вместо фонового цвета в игре. =) 
Сложности: всё просто 
Комментарии: к финалу забыл, а сейчас добавил запоминание максимального счета и вывод его вместе с текущим, чтобы был стимул =) 
  Итого:   19 видеоуроков общей продолжительностью 6 час. 48 мин. 4 чел. ★ 4.97  
  Финалисты:   Аркадий,   Сергей Соколов,   Николай,   Алексей|BrisK|Кривицкий .

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




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

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

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

Ты в любой момент сможешь отписаться от рассылки.
Научился: записывать видео с первого раза ))) а вообще стал более быстро понимать как работать с классами и полями, их методами доступа, при реализации своих доработок немного пришлось изменить код чтобы получать доступ к полям в других классах.
Трудности: устранить все ошибки в программе))
Всё очень понравилось. Хотелось бы сесть и самому все повторить, но думаю так быстро не получиться, хотя если такое проделать то это будет +200% к опыту.
Смотреть видеозапись: https://youtu.be/TqycJxY4cos
Научился: По канонам ООП научился создавать класс, отвечающий за логику игры! Это дорогого стоит. Научился писать процедуры передвижения и поворота фигур на доске и управление клавишами. Научился использованию консоли для процедуры замещения строк. продолжил изучение делегатов. Рассмотрено много механизмов работы с классами, объектами и методами.
Трудности: Были сложности с выполнением некоторых ДЗ. Были ошибки. Кирилл подробно и четко все объяснял.
Многое планировал сделать на этом курсе. Но из-за частичной потери зрения не реализовал. Очень надеюсь вернуться позже к курсу и все задумки претворить в жизнь. В первую очередь сделать музыкальное сопровождение, как в Тетрисе образца 90-х годов. Я очень благодарен Кириллу за воплощение игры средствами Си#. Он очень верно почувствовал тренд спроса на подобные игры. Все уроки очень проработаны. Показаны возможные ошибки и их последствия. Рассчитано на новичков, но и профи найдут много полезного. Пока не планирую проходить какой-либо курс. Надо восстановить зрение.
Смотреть видеозапись: https://youtu.be/6sgx0mYHh9Y