C# обучение видео

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

Морской Бой

Создание полноценной игровой программы Морской Бой.
Объектная модель кораблей и моря + искусственный интеллект.

Объём: 15 уроков.
Срок: 30 дней.

Хочу купить!

Купить в рассрочку за мегахеши

Цена: 1200 p.


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

# Название видеоурока Решило Рейтинг Доступ
1 Планирование 00:40:08 73 чел. ★ 4.9 Done
  Мы начинаем создание игровой программы Морской Бой.
1. Создать объектную модель.
2. Реализовать классы Корабль и Море.
3. Спроектировать интерфейс игры. DataGridView.
4. Написать Искусственный интеллект.
5. Реализовать игру с компьютером.
6. Реализовать сетевую версию игры на двоих.

Отчёт отправил: 7276. Ильшат Выполнено за 1 час. 40 мин. [Показать отчёт]
Научился: Повторил работу со статическими переменными и массивами. 
Сложности: Проблем не было. 
Комментарии: Все ок. 
2 Море и Корабль 00:57:13 68 чел. ★ 5 Done
  На этом уроке мы создадим "ядро" программы, два основных класса - Корабль и Море.
А в конце урока протестируем их работу.
Отчёт отправил: 7276. Ильшат Выполнено за 2 час. 10 мин. [Показать отчёт]
Научился: Повторил работу с матрицами boost::ublas, указателями unique_ptr. 
Сложности: Проблем не было. 
Комментарии: Без использования наследования и полиморфизма трудно назвать полученную систему классов объекто-ориентированной. Страуструп называет такой стиль программирования - абстракцией данных, когда создаются мелкие служебные классы, которые инкапсулируют внутри себя данные и открывают к ним доступ через разрешенный интерфейс. Это подготовительный этап к ООП, переходный от процедурного стиля. Не очень нравится реализация классов Моря и Корабля, например их конструкторы не работают как надо. Но это все сложности, они дадут о себе знать, когда программа будет эволюционировать. На данный момент это не важно, реализация системы получилась простой и ясной, понравилась идея двух массивов, здесь она тоже кстати. Евгений Витольдович хорошо продумал, чтобы код получился как можно проще и понятнее, спасибо:) 
3 Редактор и Сетка 00:59:58 59 чел. ★ 5 Done
  На этом уроке мы разместим и настроим DataGridView.
Потом расширим класс Море до Редактора, добавив методы
для автоматического размещения всех кораблей.
Отчёт отправил: 7276. Ильшат Выполнено за 2 час. 40 мин. [Показать отчёт]
Научился: Повторил работу с компонентом QTableWidget - аналог DataGridView. 
Сложности: Проблем не было. 
Комментарии: Интересный способ случайного размещения кораблей. Каждый раз, когда проверял отчеты формулистов по морскому бою я задавался вопросом - почему на верхнем заголовке таблиц написано РЕСПУБЛИКА? Теперь стало понятно, это оказалось предложением одного из формулистов :) 
4 Делегаты отображения 00:32:57 55 чел. ★ 5 Done
  На этом уроке мы перенесём функции из Моря в редактор и
создадим Делегаты для отображения Кораблей и Выстрелов.
Отчёт отправил: 7276. Ильшат Выполнено за 1 час. 30 мин. [Показать отчёт]
Научился: Повторил работу с делегатами. 
Сложности: Сложностей не было. 
Комментарии: На верхнем скриншоте раскраска клетки поля при промахе. На нижнем - рассмотрены случаи попадания и потопления корабля. 
5 Установка кораблей 00:38:34 49 чел. ★ 4.9 Done
  На этом уроке мы дадим возможность пользователю
устанавливать корабли мышкой и с клавиатуры.
Отчёт отправил: 7276. Ильшат Выполнено за 2 час. 10 мин. [Показать отчёт]
Научился: Повторил обработку событий мышки и клавиатуры. 
Сложности: Реализовать выделение ячеек. 
Комментарии: Хороший урок, попрактиковался с компонентом QTableWidget для вывода таблицы, были некоторые проблемы с обработкой выделения мышкой ячеек и выводом результата добавления. 
6 Олимпиада - Самый лучший алгоритм 00:49:59 44 чел. ★ 4.9 Done
  На участие в олимпиаде было прислано 10 работ.
В этом видео мы проводим тестирование всех программ.
Домашнее задание - составить словесный алгоритм ИИ.
Отчёт отправил: 7276. Ильшат Выполнено за 1 час. 10 мин. [Показать отчёт]
Научился: Познакомился с разными вариантами алгоритмов ИИ для игры в Морской бой. 
Сложности: Сложностей не было. 
Комментарии: Понравились алгоритмы 4004 и public. В моем случае я бы так же сначала искал 4-палубник, попутно сразу добивая найденные корабли, и после потопления 4-палубника, искал бы 2-палубники. 
7 Олимпиада - Угадай число 00:23:26 51 чел. ★ 4.8 Done
  Класс Secret загадал число.
Вам нужно написать класс Strategy,
который сможет его отгадать.
Инструкции в видео-уроке.
Отчёт отправил: 7276. Ильшат Выполнено за 50 мин. [Показать отчёт]
Научился: Повторил работу с генератором случайных чисел. 
Сложности: Проблем не было. 
Комментарии: Хорошая разминка, понравилось разделение классов. 
8 Олимпиада - Создание ИИ - Стратегия 00:12:46 35 чел. ★ 5 Done
  Олимпиадная задача - создать алгоритм ИИ для игры в Морской бой.
Подробности на видео.
Отчёт отправил: 7276. Ильшат Выполнено за 4 час. 20 мин. [Показать отчёт]
Научился: Познакомился в библиотекой консольного вывода ncurses. 
Сложности: Реализовать алгоритм. 
Комментарии: На первом скриншоте результат работы алгоритма для прямого расположения кораблей и ниже для случайного. На втором скриншоте при запуске с командой строки задаю количество тестов случайных расположений, нахожу минимальное, среднее и максимальное количество шагов. Спасибо за отличный урок, хорошо попрактиковался:) 
9 Олимпиада - Создание ИИ - Шаблон ударов 00:35:30 33 чел. ★ 4.9 Done
  Алгоритм искусственного интеллекта для игры в Морской бой состоит из двух этапов:
1. нанесение ударов по шаблону для поиска 4-палубного и 2-палубных.
2. добивание раненного корабля и пометка клеток вокруг потопленного корабля.
На этом уроке разберём и реализуем первый этап.
Отчёт отправил: 7276. Ильшат Выполнено за 1 час. 30 мин. [Показать отчёт]
Научился: Повторил создание и обработку двумерных массивов. 
Сложности: Небольшая ошибка, опечатка в границах цикла при инициализации двумерного массива. 
Комментарии: Интересный алгоритм, случайный выбор из матрицы put ячейки с наибольшим значением веса. 
10 Олимпиада - Создание ИИ - Добивание корабля 00:49:11 33 чел. ★ 4.9 Done
  Алгоритм искусственного интеллекта для игры в Морской бой состоит из двух этапов:
1. нанесение ударов по шаблону для поиска 4-палубного и 2-палубных.
2. добивание раненного корабля и пометка клеток вокруг потопленного корабля.
На этом уроке разберём и реализуем второй этап.
Отчёт отправил: 7276. Ильшат Выполнено за 1 час. 50 мин. [Показать отчёт]
Научился: Повторение материала из прошлых уроков, работа с рекурсией. 
Сложности: Проблем не было. 
Комментарии: Все ок, хорошо придумано использовать вывод матрицы put на экран, наглядно. 
11 Рефакторинг кода 00:27:28 28 чел. ★ 5 Done
  На этом уроке мы займёмся рефакторингом нашего проекта.
Создадим класс SeaGrid, в который перенесём некоторые
функции из класса формы.
Отчёт отправил: 7276. Ильшат Выполнено за 1 час. 20 мин. [Показать отчёт]
Научился: Повторение рефакторинга. 
Сложности: Проблем не было. 
Комментарии: Все ок, рефакторинг на пользу, меньше деталей в классе формы) 
12 Интерфейс игры 00:21:58 27 чел. ★ 5 Done
  На этом уроке мы создадим интерфейс пользователя -
разместим несколько кнопочек и запрограммируем их.
Также создадим перечисление всех режимов игры.
Отчёт отправил: 7276. Ильшат Выполнено за 1 час. 10 мин. [Показать отчёт]
Научился: Повторил работу с интерфейсом программы, обработку событий мышки. 
Сложности: Сложностей не было. 
Комментарии: Реализовал секретную функцию, предложенную в уроке: два клика правой кнопкой мышки показывают корабли компьютера, клик левой кнопкой - скрывает. 
13 Последний Бой! 00:26:59 27 чел. ★ 5 Done
  На этом уроке мы закончим создание Морского боя.
Сделаем отображение выстрелов пользователя.
Подключим класс Mission и сделаем ход компьютера.
Ходы будут выполняться в порядке очереди.
Нам потребуется таймер для постепенного
отображения серии ходов компьютера.
Отчёт отправил: 7276. Ильшат Выполнено за 1 час. 30 мин. [Показать отчёт]
Научился: Повторил работу с таймером, настройкой интерфейса программы. 
Сложности: Проблем не было. 
Комментарии: Компьютер играет очень даже здорово:) 
14 ФИНАЛЬНЫЙ УРОК 00:23:23 11 чел. ★ 5 Done
  Записать видео обзор Морского боя. созданного на этом курсе.

Отчёт отправил: 7276. Ильшат Выполнено за 30 мин. [Показать отчёт]
Научился: Повторил создание видео обзоров. 
Сложности: Проблем не было. 
Комментарии: Спасибо за отличный курс :) 
Видеообзор: https://youtu.be/m_CHnhpE9u4
15 VIP. Анимированный кружок 00:32:54 119 чел. ★ 4.9 Done
  На этом уроке мы создадим двигающийся кружок,
из которого потом сделаем анимированый кубик.

Задание:
Создать два класса с наследованием.
Сделать плавное перемещение кружка.
Отчёт отправил: 7276. Ильшат Выполнено за 40 мин. [Показать отчёт]
Научился: Повторил работу с графикой: классы Graphics, Pen, Bitmap. 
Сложности: Сложностей не было. 
Комментарии: Интересная задумка, идем дальше) 
16 VIP. Анимированный кубик 00:44:27 108 чел. ★ 5 Done
  На этом уроке мы создадим массив из кружков,
они будут сначала двигаться случайно, похоже на бильярд.
Дальше мы создадим правила для их передвижения
и в конечном итоге реализуем анимированный игральный кубик.

Задание:
Нарисовать верхнюю сторону игрального кубика
с шестью анимированными точками для смены чисел.
Отчёт отправил: 7276. Ильшат Выполнено за 2 час. 50 мин. [Показать отчёт]
Научился: Повторил работу с двумерными массивами в C#. 
Сложности: Организовать работу программы с использованием классов. 
Комментарии: Интересная тема, анимация завораживает. Понравилась идея представления значения числа на игральном кубике в виде двумерного массива. По началу, меня это не устраивало, реализовал в виде одномерного массива, но получилось так, что решение Евгения Витольдовича лучше отражает идею, по коду легче понять замысел. Однако синтаксис этих вложенных конструкций меня не устраивал. Поэтому добавил дополнительные переменные для выделения значений из массивов. Добавил классы NumberArena (абстракция числа на кубике), Drawer(рисовальщик) и GameLogic(внешний класс, который всем управляет и вызывается из формы). По ходу разработки было много сомнений. Конечно, синтаксически добавить класс не составляет никаких проблем, даже есть такой способ в рефакторинге "выделение класса" и прочие мелкие махинации с кодом. Проблемы были в моменте связи классов. И тут-то мне не нравилось, что классы знают много друг о друге и выполняют чужую работу. Не буду подробно описывать все эти моменты, в итоге удалил класс Drawer и передал его обязанности GameLogic. Своим полученным решением не доволен, но доволен тем, что появились идеи для дальнейших решений, которыми займусь в ближайшем будущем. Спасибо, Евгений Витольдович) 
  Итого:   16 видеоуроков общей продолжительностью 9 час. 36 мин. 8 чел. ★ 4.95  
  Финалисты:   Алексей В.,   Ильшат,   Станислав,   Tekashnik,   Новопашин Владимир,   LINKI,   Dimon,   Yefim .

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




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

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

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

Ты в любой момент сможешь отписаться от рассылки.
Трудности: Найти время на выполнение. Долго болел - не мог делать, температура было :(
Очень понравился курс "Морской Бой". Но VIP уроки я наверное сделать не смогу, так как их 2 и следующий открывается после набирания предыдущего 16 лайков :), а мне осталось до 31. Печалька :_ / Хотя может быть VIP уроки выполняются ВНЕ курса - то есть срок закончится, а выполнять VIP уроки можно будет? Кстати. Я после того, как вылечился, за 1 ВЕЧЕР СДЕЛАЛ ЭТОТ МОНТАЖ. Это даже удивило 0_0 :)
Научился: Запиливать видос.
Трудности: Что творится с моим организмом - все слова разом пропадают и несу какой-то бред.
Следующий курс - куда укажет улиточная судьба.