# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 | Планирование |
1 тест |
|||
Мы начинаем создание игровой программы Морской Бой. 1. Создать объектную модель. 2. Реализовать классы Корабль и Море. 3. Спроектировать интерфейс игры. DataGridView. 4. Написать Искусственный интеллект. 5. Реализовать игру с компьютером. 6. Реализовать сетевую версию игры на двоих. Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Я уже пробовал самостоятельно писать игру, даже написал возможность мышью перетаскивать корабли чтобы установить на Море, увидел такие же проблемы, с которыми столкнулся и я сам. Вот хочу посмотреть как Евгений Витольдович решил эти все проблемы. Решение DataGridView интересное. Сложности: планирование всегда сложно Комментарии: 1. У меня на скрине как на видео Игра на Море возвращает при Ударе три значения, но я думаю что должно возвращать всего 2. Это попал или мимо. А вот если попал, то уже Корабль должен вернуть ранил или убил. 2. Пока не очень понятно зачем Длины кораблей, лучше ограничивать другими вариантами, ну посмотрим что будет дальше. 3. Я когда придумывал как реализовать решил что корабль должен занимать не просто свои значения, а ещё и на Море отмечать места рядом с собой, в эти места не могут ставиться другие корабли, но накладываться друг на друга могут (я говорю про буферные зоны возле кораблей) |
|||||
2 | Море и Корабль |
1 тест |
|||
На этом уроке мы создадим "ядро" программы, два основных класса - Корабль и Море. А в конце урока протестируем их работу. Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Интересная задумка, что бы использовать две карты, я помню что у нас в Сокобане такое было, но не подумал что это же можно использовать в таком "простом" проекте как Морской Бой. Он оказался сложнее, чем я думал! Сложности: очень не хотел использовать русские названия, но уже имею опыт, когда называешь функции по-своему, то позже теряешься в них, когда пишешь программу под диктовку. Поэтому оставил как на видео, но не думаю что и дальше буду делать русские названия, просто буду знать что такое возможно. Комментарии: я всё не могу понять зачем нужен enum, ведь можно просто сравнивать с текстом, а так привязываешься к какой-то сущности, нужно ещё и следить чтобы она была доступна и т.п. |
|||||
3 | Редактор и Сетка |
|
|||
На этом уроке мы разместим и настроим DataGridView. Потом расширим класс Море до Редактора, добавив методы для автоматического размещения всех кораблей. Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Научился чуть больше работать с Grid, задавать цвета, работать с разными массивами как единым просто используя один и тот же номер. Размещение рандомно путем удаления предыдущих значений в обозначенной точке. Сложности: Понять как такой маленький код может делать такие большие вещи, вроде разговаривали про четырехпалубный, а тут бац и все корабли у нас уже рассчитано как должны стоять! Комментарии: Во время урока я уже сделал размещение на одном поле ровно, а на втором поле случайно, поэтому решение домашнего задания было не сложным)) |
|||||
4 | Делегаты отображения |
1 тест |
|||
На этом уроке мы перенесём функции из Моря в редактор и создадим Делегаты для отображения Кораблей и Выстрелов. Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Повторил использование делегатов Сложности: перестраивать программу, когда она уже почти работает Комментарии: Евгений Витольдович в начале урока сказал что уроке покажет как будут расставляться корабли, а мы до этого так и не дошли... |
|||||
5 | Установка кораблей |
1 тест |
|||
На этом уроке мы дадим возможность пользователю устанавливать корабли мышкой и с клавиатуры. Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: повторенье Сложности: уместить в голове всю эту кучу разрозненного кода, тем более что я уже видел как его рефакторили Комментарии: я понял почему забросили так на долго этот проект, потому что ему как раз не хватало того рефакторинга, который был 15.11.2015. код стал очень большим и неудобным, тяжело искать, тяжело читать, поэтому Евгений его и откладывал! |
|||||
6 | Олимпиада - Самый лучший алгоритм |
|
|||
На участие в олимпиаде было прислано 10 работ. В этом видео мы проводим тестирование всех программ. Домашнее задание - составить словесный алгоритм ИИ. Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Ждем результата Сложности: думать Комментарии: смотрим |
|||||
7 | Олимпиада - Угадай число |
|
|||
Класс Secret загадал число. Вам нужно написать класс Strategy, который сможет его отгадать. Инструкции в видео-уроке. Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: разбираться с чужой структурой Сложности: всё понятно Комментарии: переходим непосредственно к морскому бою |
|||||
8 | Олимпиада - Создание ИИ - Стратегия |
|
|||
Олимпиадная задача - создать алгоритм ИИ для игры в Морской бой. Подробности на видео. Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 6 час. 00 мин. [Показать отчёт] Научился: продумывать варианты стратегии Сложности: придумывать своё, а не использовать чужое Комментарии: нужно нарисовать сетку, и по ней рандомно долбить, если алгоритм продуман заранее, то зная его можно расставлять так, чтобы комп долго искал, а когда рандомно, то тут как повезет |
|||||
9 | Олимпиада - Создание ИИ - Шаблон ударов |
|
|||
Алгоритм искусственного интеллекта для игры в Морской бой состоит из двух этапов: 1. нанесение ударов по шаблону для поиска 4-палубного и 2-палубных. 2. добивание раненного корабля и пометка клеток вокруг потопленного корабля. На этом уроке разберём и реализуем первый этап. Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: реализовать свою идею. что-то мне ещё не хватает мощи самому писать придуманный мною алгоритм Сложности: реазиловать Комментарии: массив int[,] shape нужно заполнять динамически, ведь мы знаем размер поля (его можно получить через Море.размер_моря.х*у), и на основе этих данных заполнять поле, вдруг у нас поменяется размер, и уже такая сеточка не проканает. |
|||||
10 | Олимпиада - Создание ИИ - Добивание корабля |
1 тест |
|||
Алгоритм искусственного интеллекта для игры в Морской бой состоит из двух этапов: 1. нанесение ударов по шаблону для поиска 4-палубного и 2-палубных. 2. добивание раненного корабля и пометка клеток вокруг потопленного корабля. На этом уроке разберём и реализуем второй этап. Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: добивать корабли, а так же метить территорию вокруг них, необычный подход, надо будет ещё разобраться, чтобы в дальнейшем использовать при программировании на языке C# Сложности: всё это осмыслить, принять Комментарии: т.е. мы запускаем функцию ChekShipDirection 4 раза и в каждой из них ещё и сразу проверяем все четыре направления? не многовато ли проверок для проверок? а почему не сделать добивание в рандомные стороны? или не принципиально? |
|||||
11 | Рефакторинг кода |
|
|||
На этом уроке мы займёмся рефакторингом нашего проекта. Создадим класс SeaGrid, в который перенесём некоторые функции из класса формы. Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: чуть-чуть больше начал понимать как делать рефакторинг Сложности: понимать что куда распихивать. хорошо когда уже работает и при каждом изменении можно проверить работает или нет Комментарии: всё отлично |
|||||
12 | Интерфейс игры |
1 тест |
|||
На этом уроке мы создадим интерфейс пользователя - разместим несколько кнопочек и запрограммируем их. Также создадим перечисление всех режимов игры. Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: всё понятно, ждём когда же уже можно будет поиграть! Сложности: всё понятно и ожидаемо Комментарии: ждём финиша!!! |
|||||
13 | Последний Бой! |
|
|||
На этом уроке мы закончим создание Морского боя. Сделаем отображение выстрелов пользователя. Подключим класс Mission и сделаем ход компьютера. Ходы будут выполняться в порядке очереди. Нам потребуется таймер для постепенного отображения серии ходов компьютера. Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 3 час. 00 мин. [Показать отчёт] Научился: организацию работы всех этих методов! Сложности: только собственные доработки дают понятие о работе программы, как всё соединяется и что за что отвечает! Комментарии: добавил закраску полностью подбитого корабля, добавление настроек, возможности выбора уровня сложности игры, отображение статистики и текущего хода. кстати не сказал, но когда ход противника я блокирую грид с кораблями компьютера, чтобы нельзя даже просто так тыкнуть на него, иначе много нюансов возникало, а так всё четко работает! Видеообзор: https://youtu.be/VcUyQJm4vRM |
|||||
14 | ФИНАЛЬНЫЙ УРОК |
1 тест |
|||
Записать видео обзор Морского боя. созданного на этом курсе. |
|||||
15 | VIP. Анимированный кружок |
|
|||
На этом уроке мы создадим двигающийся кружок, из которого потом сделаем анимированый кубик. Задание: Создать два класса с наследованием. Сделать плавное перемещение кружка. Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: делать анимацию прямо на форме Сложности: интересным было то что предыдущий шарик не исчезает или "перемещается" а просто затирается таким же кружком, только белым Комментарии: применений этого урока масса, круто! идеи распирают! начиная от простых заставок на экран и заканчивая космическими перестрелками |
|||||
16 | VIP. Анимированный кубик |
|
|||
На этом уроке мы создадим массив из кружков, они будут сначала двигаться случайно, похоже на бильярд. Дальше мы создадим правила для их передвижения и в конечном итоге реализуем анимированный игральный кубик. Задание: Нарисовать верхнюю сторону игрального кубика с шестью анимированными точками для смены чисел. Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: создавать анимацию на форме Сложности: не мог понять как сделать чтобы в центре кубик был, потом вспомнил что передаем координаты края кубика (я думал центра), всё заменил, теперь динамически вычисляется центр кубика. спасибо курсу по Сокобану)) Комментарии: ещё одна ступень к званию "программист C#" пройдена |
|||||
Итого: 16 видеоуроков |
9 час. 36 мин. 7 тестов |
14 чел. | |||
Финалисты: Алексей В., Ильшат, Станислав, Tekashnik, Новопашин Владимир, LINKI, Dimon, Yefim, chokayes, Николай Денисов, Максим Лапшинов, Александр, vip, MaxB . |