# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 | Планирование |
1 тест |
|||
Мы начинаем создание игровой программы Морской Бой. 1. Создать объектную модель. 2. Реализовать классы Корабль и Море. 3. Спроектировать интерфейс игры. DataGridView. 4. Написать Искусственный интеллект. 5. Реализовать игру с компьютером. 6. Реализовать сетевую версию игры на двоих. Отчёт отправил: 2773. Никита Выполнено за 30 мин. [Показать отчёт] Научился: Заранее продумывать элементы программы. Проектировать программу до ее написания. Сложности: Ничего сложного. Комментарии: Все отлично и понятно. Конечно, в процессе реализации появится еще куча всего разного, но уже более-менее порядок. |
|||||
2 | Море и Корабль |
1 тест |
|||
На этом уроке мы создадим "ядро" программы, два основных класса - Корабль и Море. А в конце урока протестируем их работу. Отчёт отправил: 2773. Никита Выполнено за 1 час. 20 мин. [Показать отчёт] Научился: Научился логически мыслить при проектировании игры. Сложности: Все понятно, следил за логикой и вроде бы понял) Все заработало с первого раза!) Комментарии: Конечно, когда не один десяток раз напишешь программу "из головы", потом уже придет опыт и можно будет реализовывать все грамотно(!) на листе бумаги, а потом уже переводить все в программный код. Я думаю, у меня это придет, со временем) |
|||||
3 | Редактор и Сетка |
|
|||
На этом уроке мы разместим и настроим DataGridView. Потом расширим класс Море до Редактора, добавив методы для автоматического размещения всех кораблей. Отчёт отправил: 2773. Никита Выполнено за 1 час. 20 мин. [Показать отчёт] Научился: Отображать корабли случайным и фиксированным (заданно стационарно) образами. Сложности: Чего-то я уже путаюсь, какие функции у нас есть, каких нету. Конечно хорошо разбивать задачу на более мелкие, но у нас уже достаточно большое количество методов, чтобы начать путаться) Вроде так-то понятно, но сам я точно такое не напишу. Комментарии: Очень интересный урок. Классно все реализовано. Видно, что Евгений Витольдович не один день "ломал голову" над решением этой головоломки (реализация "Морского боя") )) |
|||||
4 | Делегаты отображения |
1 тест |
|||
На этом уроке мы перенесём функции из Моря в редактор и создадим Делегаты для отображения Кораблей и Выстрелов. Отчёт отправил: 2773. Никита Выполнено за 40 мин. [Показать отчёт] Научился: Использовать делегаты для отображения изменений на сетке (на dataGrid'е). Сложности: Делегаты. Но я старался вникнуть и уже понимание потихоньку приходит. Евгений Витольдович очень подробно объяснил про делегаты, все понятно. Комментарии: Конечно, когда сам буду использовать делегаты в программах несколько десятков раз, понимание будет еще лучше. Но с каждым разом, когда сталкиваюсь с делегатами, в них разбираюсь лучше и лучше) |
|||||
5 | Установка кораблей |
1 тест |
|||
На этом уроке мы дадим возможность пользователю устанавливать корабли мышкой и с клавиатуры. Отчёт отправил: 2773. Никита Выполнено за 1 час. 20 мин. [Показать отчёт] Научился: Работать с ячейками таблицы (dataGrid'а). Размещать корабли. Сложности: Функция размещения корабля, с логикой пока не очень) Комментарии: Очень рад, что мы сумели реализовать расстановку кораблей с помощью мыши и клавиатуры. Я еще сделал, чтобы можно было удалять любой корабль с клавиатуры (и включая однопалубный). |
|||||
6 | Олимпиада - Самый лучший алгоритм |
|
|||
На участие в олимпиаде было прислано 10 работ. В этом видео мы проводим тестирование всех программ. Домашнее задание - составить словесный алгоритм ИИ. Отчёт отправил: 2773. Никита Выполнено за 1 час. 10 мин. [Показать отчёт] Научился: Просмотрел работы участников, очень все понравилось! Все молодцы! Сложности: Ничего сложного. Комментарии: Мне больше всего понравился алгоритм Orange, потому что на большом количестве тестов он явно показывает свою эффективность. Словесный алгоритм для игры "Морской Бой": Стрелять случайно по полю, но если нашли корабль, то стреляем влево, вправо, вверх или вниз, чтобы "убить" его целиком. Понятное дело, что по тем клеткам, по которым стреляли, уже не будет производить выстрел и также будем запоминать те клетки, которые обрамляют корабли, что в них стрелять тоже не надо. |
|||||
7 | Олимпиада - Угадай число |
|
|||
Класс Secret загадал число. Вам нужно написать класс Strategy, который сможет его отгадать. Инструкции в видео-уроке. Отчёт отправил: 2773. Никита Выполнено за 1 час. 30 мин. [Показать отчёт] Научился: Вроде задача, на первый взгляд, несложная, а голову поломать пришлось Сложности: Реализовать алгоритм. Комментарии: Интересный урок) |
|||||
8 | Олимпиада - Создание ИИ - Стратегия |
|
|||
Олимпиадная задача - создать алгоритм ИИ для игры в Морской бой. Подробности на видео. Отчёт отправил: 2773. Никита Выполнено за 6 час. 40 мин. [Показать отчёт] Научился: К сожалению так и реализовать ничего не получилось. Просидев много часов, так и не к какому результату не пришел. Сложности: Реализовать алгоритм. Комментарии: Словесно понимаю как сделать, а программно не получается. Я конечно пробовал, но все равно стреляет по одним и тем же клеткам рандом. |
|||||
9 | Олимпиада - Создание ИИ - Шаблон ударов |
|
|||
Алгоритм искусственного интеллекта для игры в Морской бой состоит из двух этапов: 1. нанесение ударов по шаблону для поиска 4-палубного и 2-палубных. 2. добивание раненного корабля и пометка клеток вокруг потопленного корабля. На этом уроке разберём и реализуем первый этап. Отчёт отправил: 2773. Никита Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Стрелять по корабля с учетом алгоритма. Сложности: Все понятно. Комментарии: Очень хорошо, что сделали вывод на экран массива Put. Так теперь точно понятно, что откуда и куда. |
|||||
10 | Олимпиада - Создание ИИ - Добивание корабля |
1 тест |
|||
Алгоритм искусственного интеллекта для игры в Морской бой состоит из двух этапов: 1. нанесение ударов по шаблону для поиска 4-палубного и 2-палубных. 2. добивание раненного корабля и пометка клеток вокруг потопленного корабля. На этом уроке разберём и реализуем второй этап. Отчёт отправил: 2773. Никита Выполнено за 1 час. 30 мин. [Показать отчёт] Научился: Посмотрел реализацию алгоритма. Сложности: Сам алгоритм поиска кораблей. С алгоритмом помечания кораблей, куда стрелять не надо, если корабль убит, я еще кое-как разобрался, а с алгоритмом, куда идти, если попали, со всеми этими проверками, пока очень сложно. Комментарии: Очень рад, что получилось реализовать и все работает. Конечно, нынешний алгоритм пошустрее будет алгоритма "Public". Но Orange как всегда на высоте) |
|||||
11 | Рефакторинг кода |
|
|||
На этом уроке мы займёмся рефакторингом нашего проекта. Создадим класс SeaGrid, в который перенесём некоторые функции из класса формы. Отчёт отправил: 2773. Никита Выполнено за 40 мин. [Показать отчёт] Научился: Ничего нового, так как с азами рефáкторинга знаком. Сложности: Ничего сложного, все понятно. Комментарии: Я сделал еще с удалением всего корабля с карты, включая однопалубные. Делал событие при нажатии правой кнопкой мыши (ПКМ), но реакции ноль. А при нажатии кнопки "delete" на клавиатуре корабль благополучно удаляется. Возможно, что мы изменили что-то в настройках grida и теперь не обрабатываются нажатия ПКМ, а может эта кнопка сама по себе не работает для сетки. |
|||||
12 | Интерфейс игры |
1 тест |
|||
На этом уроке мы создадим интерфейс пользователя - разместим несколько кнопочек и запрограммируем их. Также создадим перечисление всех режимов игры. Отчёт отправил: 2773. Никита Выполнено за 1 час. 20 мин. [Показать отчёт] Научился: Красивому оформлению программы. Сложности: Ничего сложного. Комментарии: Все отлично, понятно и классно! Но времени конечно много отнимает все это оформление. |
|||||
13 | Последний Бой! |
|
|||
На этом уроке мы закончим создание Морского боя. Сделаем отображение выстрелов пользователя. Подключим класс Mission и сделаем ход компьютера. Ходы будут выполняться в порядке очереди. Нам потребуется таймер для постепенного отображения серии ходов компьютера. Отчёт отправил: 2773. Никита Выполнено за 1 час. 20 мин. [Показать отчёт] Научился: Играть с ИИ в "Морской бой") Сложности: В принципе ничего сложного, весь функционал написан, оставалось только все подключить и отладить, чтобы корректно все работало. Комментарии: Вот и все, закончился, к сожалению, этот видеокурс. Но зато была написана замечательная программа "Морской бой", да еще не простая, а с реализацией искусственного интеллекта. Причем последний не такой уж и простой, а весьма смышленый и обыграть его порой не так-то уж и легко. Но, мы-то знаем, как он работает, так что будем действовать его методами плюс подключим интуицию) Что хочу сказать, конечно можно еще улучшать и улучшать дизайн программы. К примеру, добавить статистику. Я вот только смог сделать отображение хода, то есть выводить чья очередь сейчас ходить. А с "секретной кнопкой" так и ничего не получилось сделать. Секретная кнопка должна была показывать нам, при ее нажатии, корабли противника, в данном случае компьютера. Мы же используем делегаты для отображения состояния поля да еще в методе ShowCompShip передается координата точки и номер корабля. Как все это "прикрутить", чтобы все работало, не придумал, к сожалению. Видать, знаний мало. Отображение статистики я, честно признаюсь, делать не стал, навряд ли получится. Так что, направление дальнейшего движения задано, буду читать книжки, разбираться. Глядишь, потом как-нибудь (очень хочется надеяться) открою этот проект и реализую все то, что хотел сделать. Огромное спасибо за видеокурс! Он очень полезен начинающим программистам, которые хотят лучше разобраться в языке C# и "прокачать" свои навыки. Тем более игра эта знакома всем с детства и попробовать ее "сделать" своими руками - это значит вдвойне осознать, что ты можешь осуществить свою задумку! p.s. Конец последнего предложения получился не очень, вдохновение закончилось. Но, думаю, Вы меня поняли) |
|||||
14 | ФИНАЛЬНЫЙ УРОК |
1 тест |
|||
Записать видео обзор Морского боя. созданного на этом курсе. |
|||||
15 | VIP. Анимированный кружок |
|
|||
На этом уроке мы создадим двигающийся кружок, из которого потом сделаем анимированый кубик. Задание: Создать два класса с наследованием. Сделать плавное перемещение кружка. Отчёт отправил: 2773. Никита Выполнено за 2 час. 10 мин. [Показать отчёт] Научился: Узнал как можно рисовать на форме. Сложности: Сложновато немного про наследуемые классы. Хотя, в видеоуроке про "стрелялку" (когда мы самолетиком управляем и стреляем в мишень) Евгений Витольдович подробно рассмотрел основы (и про полиморфизм, и про наследование, и про инкапсуляцию рассказал), так что в принципе было понятно. Комментарии: Очень интересный урок, мне понравилось) С нетерпением перехожу к следующему уроку. |
|||||
16 | VIP. Анимированный кубик |
|
|||
На этом уроке мы создадим массив из кружков, они будут сначала двигаться случайно, похоже на бильярд. Дальше мы создадим правила для их передвижения и в конечном итоге реализуем анимированный игральный кубик. Задание: Нарисовать верхнюю сторону игрального кубика с шестью анимированными точками для смены чисел. Отчёт отправил: 2773. Никита Выполнено за 2 час. 40 мин. [Показать отчёт] Научился: Созданию нескольких элементов на форме с последующим их управлением. Сложности: Сначала совсем не понял про массивы, что да как. Как эту цифру выводить, потом под конец, когда Евгений Витольдович, сказал: "давайте сделаем вывод цифры "3" по другой диагонали", тогда я уже более-менее понял, как мы прописывали эти цифры в массиве. Сложновато пока что с массивами, с логикой программы. Комментарии: Я добавил цвета в точки кубика, так думаю, будет интереснее. Просто захотелось добавить) Все отлично, действительно стоящий урок. |
|||||
Итого: 16 видеоуроков |
9 час. 36 мин. 7 тестов |
14 чел. | |||
Финалисты: Алексей В., Ильшат, Станислав, Tekashnik, Новопашин Владимир, LINKI, Dimon, Yefim, chokayes, Николай Денисов, Максим Лапшинов, Александр, vip, MaxB . |