# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 | Планирование |
1 тест |
|||
Мы начинаем создание игровой программы Морской Бой. 1. Создать объектную модель. 2. Реализовать классы Корабль и Море. 3. Спроектировать интерфейс игры. DataGridView. 4. Написать Искусственный интеллект. 5. Реализовать игру с компьютером. 6. Реализовать сетевую версию игры на двоих. Отчёт отправил: 4814. Дмитрий Выполнено за 2 час. 00 мин. [Показать отчёт] Научился: Планировать программу Сложности: Пока что ничего Комментарии: Все замечательно |
|||||
2 | Море и Корабль |
1 тест |
|||
На этом уроке мы создадим "ядро" программы, два основных класса - Корабль и Море. А в конце урока протестируем их работу. Отчёт отправил: 4814. Дмитрий Выполнено за 2 час. 00 мин. [Показать отчёт] Научился: Познакомился с enum и созданием структуры, созданием классов объектов, с деревом методов., Сложности: Все новое. Комментарии: Все отлично |
|||||
3 | Редактор и Сетка |
|
|||
На этом уроке мы разместим и настроим DataGridView. Потом расширим класс Море до Редактора, добавив методы для автоматического размещения всех кораблей. Отчёт отправил: 4814. Дмитрий Выполнено за 3 час. 00 мин. [Показать отчёт] Научился: Работа с Редактором и расширением класса. Знакомство с новыми функциями расстановки и рандома. Сложности: Все работало пока не добавил блок "Очистить область". После этого пишет, что индекс находится вне границ массива. Почему - непонятно... Комментарии: Сложно, ново, но интересно. |
|||||
4 | Делегаты отображения |
1 тест |
|||
На этом уроке мы перенесём функции из Моря в редактор и создадим Делегаты для отображения Кораблей и Выстрелов. Отчёт отправил: 4814. Дмитрий Выполнено за 5 час. 00 мин. [Показать отчёт] Научился: Работе с делегатами. Сложности: Не отследил ту секунду видео, где запись делегата сменилась с int nr на Статус status и 3 часа пересматривал все видео шаг за шагом в поисках ошибки... public delegate void deShowFight (Точка place, Статус status); Комментарии: Все хорошо. |
|||||
5 | Установка кораблей |
1 тест |
|||
На этом уроке мы дадим возможность пользователю устанавливать корабли мышкой и с клавиатуры. Отчёт отправил: 4814. Дмитрий Выполнено за 5 час. 00 мин. [Показать отчёт] Научился: Создавать событие MouseUP, писать функции PlaceShip, ПоставитьПоТочкам, НайтиНомер, отображать корабли, которые еще не поставлены. Сложности: Не упустить ничего при повторении. Почему-то периодически выдает ошибку "Индекс находится вне границ массива". if (карта_кораблей[t.x, t.y] == -1) Комментарии: Во время отладки почему-то периодически выдает ошибку "Индекс находится вне границ массива". if (карта_кораблей[t.x, t.y] == -1) В остальном все хорошо. |
|||||
6 | Олимпиада - Самый лучший алгоритм |
|
|||
На участие в олимпиаде было прислано 10 работ. В этом видео мы проводим тестирование всех программ. Домашнее задание - составить словесный алгоритм ИИ. Отчёт отправил: 4814. Дмитрий Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Пока что ничему. Как правильно расставлять корабли и как их ловить давно известно, а кода здесь не было. Но планирую повнимательнее изучить сам код победителей, чтобы увидеть как вообще задавать выстрелы и определять зоны, в которые стрелять уже не надо. Сложности: Просто нет необходимых знаний для переноса алгоритма из головы в программу. Лучший алгоритм у Оранжа 2775. У Елены 4004 отсутствует рандом, у нее всегда одинаковое количество ходов тратится на одну и ту же расстановку, минимум = среднему = максимуму. Она методично проходит по А4 - А8 - Б1 - Б5 и т.п. - ловит четырехпалубный. Затем так же методично проходит А2 - А6 - А10 - Б3 и т.п. и ловит двухпалубные. А затем просто проходит и методично добивает остальных. Но такой алгоритм очень предсказуем и можно просто добиться такой расстановки против нее, что количество ходов всегда будет 80, достаточно поместить однопалубный в самый конец сетки. Например, К9. Комментарии: Думаю, что не совсем правильно начинать ловить корабли от левого верхнего угла. Люди больше тяготеют к расстановке кораблей внизу и справа. И при расстановке они ставят корабли так, чтобы не попасть сразу под ходы А4, А8, Б1, Б5 и т.п. Думаю, что нужно начинать выстрелы с клеток К4, К8, З10, Г10 и далее по кругу на вертикаль А и горизонталь 1. Затем пройти по спирали до центра. Аналогично пройти шагом 2 и выловить все корабли, кроме одиночных. Когда останутся только одиночные, то первые 3 выстрела в те клетки, которые имеют максимальное количество "неоткрытых" соседей, а 4-й - в клетку с минимальным количеством соседей. Необходимое соотношение выстрелов в наиболее выгодные клетки с выстрелами в клетки, у которых все соседние уже открыты, нужно определять опытным путем. |
|||||
7 | Олимпиада - Угадай число |
|
|||
Класс Secret загадал число. Вам нужно написать класс Strategy, который сможет его отгадать. Инструкции в видео-уроке. Отчёт отправил: 4814. Дмитрий Выполнено за 2 час. 00 мин. [Показать отчёт] Научился: Разбираться со структурой классов, ставить простенькую защиту от читинга. Сложности: Разобраться во взаимосвязях различных классов. Комментарии: Все понравилось. |
|||||
8 | Олимпиада - Создание ИИ - Стратегия |
|
|||
Олимпиадная задача - создать алгоритм ИИ для игры в Морской бой. Подробности на видео. Отчёт отправил: 4814. Дмитрий Выполнено за 3 час. 00 мин. [Показать отчёт] Научился: Стрелять! Сложности: Придумать стратегию. Комментарии: Все замечательно. |
|||||
9 | Олимпиада - Создание ИИ - Шаблон ударов |
|
|||
Алгоритм искусственного интеллекта для игры в Морской бой состоит из двух этапов: 1. нанесение ударов по шаблону для поиска 4-палубного и 2-палубных. 2. добивание раненного корабля и пометка клеток вокруг потопленного корабля. На этом уроке разберём и реализуем первый этап. Отчёт отправил: 4814. Дмитрий Выполнено за 5 час. 00 мин. [Показать отчёт] Научился: Создавать матрицу шаблона, описал функции InitPut и RandomPut, разработал алгоритм выбора точек. Сложности: не сбиться при повторе действий. Комментарии: все замечательно. |
|||||
10 | Олимпиада - Создание ИИ - Добивание корабля |
1 тест |
|||
Алгоритм искусственного интеллекта для игры в Морской бой состоит из двух этапов: 1. нанесение ударов по шаблону для поиска 4-палубного и 2-палубных. 2. добивание раненного корабля и пометка клеток вокруг потопленного корабля. На этом уроке разберём и реализуем второй этап. Отчёт отправил: 4814. Дмитрий Выполнено за 4 час. 00 мин. [Показать отчёт] Научился: Добивать несчастные корабли. Сложности: Не пропустить какую-нибудь точку или запятую. Комментарии: Все отлично |
|||||
11 | Рефакторинг кода |
|
|||
На этом уроке мы займёмся рефакторингом нашего проекта. Создадим класс SeaGrid, в который перенесём некоторые функции из класса формы. Отчёт отправил: 4814. Дмитрий Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Получил практику по рефакторингу кода Сложности: Все понятно. Комментарии: При расстановке кораблей вручную почему-то зависает и показывает, что "Индекс находился вне границ массива", если ставишь корабль на 10-ю строчку или столбец. Непонятно. :-( public void ОчиститьТочку (Точка t) { if (!НаМоре(t)) return; if (карта_кораблей[t.x, t.y] == -1) ?????? return; УбратьКорабль (карта_кораблей [t.x, t.y]); } |
|||||
12 | Интерфейс игры |
1 тест |
|||
На этом уроке мы создадим интерфейс пользователя - разместим несколько кнопочек и запрограммируем их. Также создадим перечисление всех режимов игры. Отчёт отправил: 4814. Дмитрий Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Создавать режимы игры и интерфейс пользователя. Сложности: Сложностей не возникло Комментарии: Все замечательно. |
|||||
13 | Последний Бой! |
|
|||
На этом уроке мы закончим создание Морского боя. Сделаем отображение выстрелов пользователя. Подключим класс Mission и сделаем ход компьютера. Ходы будут выполняться в порядке очереди. Нам потребуется таймер для постепенного отображения серии ходов компьютера. Отчёт отправил: 4814. Дмитрий Выполнено за 2 час. 00 мин. [Показать отчёт] Научился: Подключать класс с ИИ, играть. Сложности: Сложность в том, что прошло полгода с большей части курса, и уже мало что помнишь. Особенно учитывая, что это был один из первых моих курсов, и тогда я, в основном, только молча копипастил. Почему-то перестала работать функция добивания раненого корабля, придется искать ошибку. :-( Сейчас весь курс с нуля буду пересматривать, чтобы понять что "мы" вообще делали. Комментарии: Все замечательно. Лишний раз убеждаюсь, что лекции по 20 минут удобнее часовых хотя бы с точки зрения поиска ошибок. В конце каждой лекции идет показ текущего состояния, что позволяет лучше ориентироваться. |
|||||
14 | ФИНАЛЬНЫЙ УРОК |
1 тест |
|||
Записать видео обзор Морского боя. созданного на этом курсе. |
|||||
15 | VIP. Анимированный кружок |
|
|||
На этом уроке мы создадим двигающийся кружок, из которого потом сделаем анимированый кубик. Задание: Создать два класса с наследованием. Сделать плавное перемещение кружка. |
|||||
16 | VIP. Анимированный кубик |
|
|||
На этом уроке мы создадим массив из кружков, они будут сначала двигаться случайно, похоже на бильярд. Дальше мы создадим правила для их передвижения и в конечном итоге реализуем анимированный игральный кубик. Задание: Нарисовать верхнюю сторону игрального кубика с шестью анимированными точками для смены чисел. |
|||||
Итого: 16 видеоуроков |
9 час. 36 мин. 7 тестов |
14 чел. | |||
Финалисты: Алексей В., Ильшат, Станислав, Tekashnik, Новопашин Владимир, LINKI, Dimon, Yefim, chokayes, Николай Денисов, Максим Лапшинов, Александр, vip, MaxB . |