# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 | Планирование |
1 тест |
|||
Мы начинаем создание игровой программы Морской Бой. 1. Создать объектную модель. 2. Реализовать классы Корабль и Море. 3. Спроектировать интерфейс игры. DataGridView. 4. Написать Искусственный интеллект. 5. Реализовать игру с компьютером. 6. Реализовать сетевую версию игры на двоих. Отчёт отправил: 12230. LINKI Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Null Сложности: Null Комментарии: Very Good! Заинтересовало ;) / У меня чуть другие планы, но пока структура такая будет ;) |
|||||
2 | Море и Корабль |
1 тест |
|||
На этом уроке мы создадим "ядро" программы, два основных класса - Корабль и Море. А в конце урока протестируем их работу. Отчёт отправил: 12230. LINKI Выполнено за 2 час. 00 мин. [Показать отчёт] Научился: Null Сложности: Найти время Комментарии: VERY GOOD / Получилось не плохо. Вот за, что люблю ООП ;))))) |
|||||
3 | Редактор и Сетка |
|
|||
На этом уроке мы разместим и настроим DataGridView. Потом расширим класс Море до Редактора, добавив методы для автоматического размещения всех кораблей. Отчёт отправил: 12230. LINKI Выполнено за 3 час. 00 мин. [Показать отчёт] Научился: Null; Сложности: Найти время ;) Комментарии: Прикольно получается ;))) Я ещё сделал тот самый алгоритм для нахождения всех клеток от первой точки до второй. Ещё не стал делать размер полей статичным - ибо хочу потом сделать несколько полей (4 или 6) и они по парно будут с разными размерами ;) Сделал "адаптивную форму" ну тоисть - сделаешь карту в 100 клеток форма растянется, второе поле тоже и кнопки опустятся, (При любых размерах вид остаётся хорошим). +Сделал алгорити, который возвращает букву енг алфавита (пример: A1, Z48), мозги поломал, а нужен был он для того, чтобы поля можно было бы делать огромными и при этом в ручную не забивать массив этих букв... Вообщем понравилось! Класс! |
|||||
4 | Делегаты отображения |
1 тест |
|||
На этом уроке мы перенесём функции из Моря в редактор и создадим Делегаты для отображения Кораблей и Выстрелов. Отчёт отправил: 12230. LINKI Выполнено за 2 час. 28 мин. [Показать отчёт] Научился: Null Сложности: Найти время ;) Комментарии: Классно получается. Всё понятно и классно. Самое забавное, что я сам себе растягиваю время - если Евгений, что-то сказал, что нужно что-то сделать, ставлю на паузу и сам делаю, потом сверяю и обычно у меня получается хорошо :))) |
|||||
5 | Установка кораблей |
1 тест |
|||
На этом уроке мы дадим возможность пользователю устанавливать корабли мышкой и с клавиатуры. Отчёт отправил: 12230. LINKI Выполнено за 2 час. 28 мин. [Показать отчёт] Научился: Null Сложности: Найти время Комментарии: Классно получается! Прикольно, эт я - на 15 минуте остановил сам сделал, потом остальное видео смотрел. Мне было легче делать проверки и другие чтуки из-за того, что я реализовал тот самый алгоритм, который с ЛВ точки до ПН точки ставит корабль. Ещё я сделал другое удаление корабля - ПКМ по любой точке корабля :) (в том же событии нажатия можно было бы сделать ;) ) / Сделал проверку поставки корабля, а не удаление - для этого написал 2 функции ( 1 -ЕстьЛиОколоТочкиКорабль / 2 - ЕстьЛиОколоКорабляКорабли) - и всё отлично работает - корабли нельзя ставить близко друг к другу - в общем, как по правилам ;) / Сделал ещё кнопку "очистки моря". Ну а остальное тоже самое, что и у Евгения. И да теперь я знаю - КАК УЖАСНО ДЕЛАТЬ РУСАЧИЕ НАЗВАНИЯ ФУНКЦИЯМ, ПЕРЕМЕННЫМ, КЛАССАМ - больше так точно делать не буду, но хоть узнал каково это ;))))) |
|||||
6 | Олимпиада - Самый лучший алгоритм |
|
|||
На участие в олимпиаде было прислано 10 работ. В этом видео мы проводим тестирование всех программ. Домашнее задание - составить словесный алгоритм ИИ. Отчёт отправил: 12230. LINKI Выполнено за 50 мин. [Показать отчёт] Научился: Null Сложности: Null Комментарии: Прикольно. Я хотел бы добавить 3 алгоритма(3 уровня сложности): 1) Бьёт случайно и ничего не проверяет 2) Бьёт случайно, но умно 3) Знает где все корабли, но поддаётся чуть чуть (чтоб было возможно победить) Было-бы классно если бы мы (в курсе) создавали такой "тестер" алгоритмов ;) |
|||||
7 | Олимпиада - Угадай число |
|
|||
Класс Secret загадал число. Вам нужно написать класс Strategy, который сможет его отгадать. Инструкции в видео-уроке. Отчёт отправил: 12230. LINKI Выполнено за 1 час. 28 мин. [Показать отчёт] Научился: Null Сложности: Найти время Комментарии: Очень прикольное задание. Даже видео не смотрел ;). Разобрался. Написал 3 алгоритма. 1) МетодГрубойСилы(BrootForce) - просто увеличивает значение на 1 ;D - не предсказуемое кол-во итераций 2) МетодРандомногоСреза - это массив int который срезается и рандомное следуещее значение принимает - максимальное кол-во итераций - 100 - когда тестил первые разы был идивлён (за 2 итерации находил), а оказалось что seed у класса Secret был таким-же, что и у Strategy, поэтому привязал к Seed рандома к Времени, я так в C++ обычно делаю ;)))). 3) МетодСреза - очень простой и эффективный метод :)) Максимум за 10 итераций находит "секретное" число. Сделал 3 наверное для того, чтобы сделать ИИ глупее или умнее ;))))))) |
|||||
8 | Олимпиада - Создание ИИ - Стратегия |
|
|||
Олимпиадная задача - создать алгоритм ИИ для игры в Морской бой. Подробности на видео. Отчёт отправил: 12230. LINKI Выполнено за 3 час. 33 мин. [Показать отчёт] Научился: Попрактиковался Сложности: Очень долго не мог найти время на прохождение урока ;) Комментарии: Очень классно! Я сделал 4 алгоритма! Один класс, и функция которыя определяет текущий режим (какой алгоритм будет работать). Вообщем сделал 4 режима и нашёл крупненькую уязвимость в коде ;))) 1) StupidRandom - Просто псевдо рандомные выстрелы в море ~90 ходов 2) SmartRandom - Умные выстрелы (если попал, то добивает и обделяет корабль, чтобы около него не стрелять) ~50 3) Hacker(=20 ходов) - Он знает где корабли и чётко по ним стреляет - это я сделал не поиском сингнатур в памяти(как Orange), а обычной уязвимостью - суть в том, что если к нам пришёл объект - Море sea, то почему бы его не переопределить, как Редактор sea? Я просто сделал функцию, которая получает корабли хитрым способом, по номерам и кладёт их в массив - вот это важную роль играет - ((Редактор)sea).КартаКораблей(Точка) - возвращает int(номер корабля). Хитрооо... Прикольно получилось и сделал быстро :) 4) StupidHacker - "притупленный" хакер - стреляет точно, но иногда "притупляется" - 1 к 3. В среднем ~40 ходов. Мне очень понравился результат. Больше всего времени потратил - на второй алгоритм ;) Больше всего мне понравился 3 ;)))))))))))))))) (На скриншоте 2 алгоритм) |
|||||
9 | Олимпиада - Создание ИИ - Шаблон ударов |
|
|||
Алгоритм искусственного интеллекта для игры в Морской бой состоит из двух этапов: 1. нанесение ударов по шаблону для поиска 4-палубного и 2-палубных. 2. добивание раненного корабля и пометка клеток вокруг потопленного корабля. На этом уроке разберём и реализуем первый этап. Отчёт отправил: 12230. LINKI Выполнено за 36 мин. [Показать отчёт] Научился: Null Сложности: Null Комментарии: Круто получилось. Я конечно не стал делать этот алгоритм потому, что я уже сделал свой, как по мне может и мой несколько отличается от того, который в уроке, но мне мой нравится не меньшим количеством ходов, а своей некой псевдо-рандомностью ;) Так, что у меня не было цели сделать супер алгоритм, а была цель сделать 3 алгоритма, для 3-ёх уровней сложности :) (Просто смотрел видео и попивал чай) |
|||||
10 | Олимпиада - Создание ИИ - Добивание корабля |
1 тест |
|||
Алгоритм искусственного интеллекта для игры в Морской бой состоит из двух этапов: 1. нанесение ударов по шаблону для поиска 4-палубного и 2-палубных. 2. добивание раненного корабля и пометка клеток вокруг потопленного корабля. На этом уроке разберём и реализуем второй этап. Отчёт отправил: 12230. LINKI Выполнено за 50 мин. [Показать отчёт] Научился: Null Сложности: Null Комментарии: #2 ;))))))))))))))))))) Круто получилось. Я конечно не стал делать этот алгоритм потому, что я уже сделал свой, как по мне может и мой несколько отличается от того, который в уроке, но мне мой нравится не меньшим количеством ходов, а своей некой псевдо-рандомностью ;) Так, что у меня не было цели сделать супер алгоритм, а была цель сделать 3 алгоритма, для 3-ёх уровней сложности :) (Просто смотрел видео и попивал чай) |
|||||
11 | Рефакторинг кода |
|
|||
На этом уроке мы займёмся рефакторингом нашего проекта. Создадим класс SeaGrid, в который перенесём некоторые функции из класса формы. Отчёт отправил: 12230. LINKI Выполнено за 30 мин. [Показать отчёт] Научился: Null Сложности: Null Комментарии: Я всегда люблю разделять части кода и в основной программе - оставлять только использование, того, что я написал (библиотеки, классы и тд). Полезный урок - учит, что это правильно ;)))))))))) Я сразу задание прочитал и выполнил. Псссс. Кстати 4 функции в коде формы - не нужны были ;) Так, как в делегат мы могли передать - GridUser.ShowShips, а так, как у нас 2 объекта SeaGrid, следовательно 4 функции = мусор ;)))) Всем рекомендую разделять код! Когда-то я даже не знал, что такое классы... И писал игру в 6k строк (HackGame) в одном классе - Program 0_0. Теперь же пишу движок и модули(HackGame2.0), а в основной программе всего строчек 20-40, использую ООП, интерфейсы. Единственные минусы C# - Малая Кроссплатформенность и Не очень Производительность(чего вы хотели С++ написан на C, C# написан на C++ ;))) (Вроде так)) Я только на C++ пишу, когда нужна кроссплатформенность ;) А так C# люблю больше, уж самый он удобный и красивый (Привет PHP"шникам! ;D(не все поймут)) |
|||||
12 | Интерфейс игры |
1 тест |
|||
На этом уроке мы создадим интерфейс пользователя - разместим несколько кнопочек и запрограммируем их. Также создадим перечисление всех режимов игры. Отчёт отправил: 12230. LINKI Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Null Сложности: Найти время Комментарии: Класс! У меня уже всё было готово, кроме кнопки старт и секретной функции ;)))) |
|||||
13 | Последний Бой! |
|
|||
На этом уроке мы закончим создание Морского боя. Сделаем отображение выстрелов пользователя. Подключим класс Mission и сделаем ход компьютера. Ходы будут выполняться в порядке очереди. Нам потребуется таймер для постепенного отображения серии ходов компьютера. Отчёт отправил: 12230. LINKI Выполнено за 1 час. 28 мин. [Показать отчёт] Научился: Null Сложности: Найти время ;) Комментарии: Очень классно! Я даже на средней сложности ели как выиграл - были эпичные баталии 0_o не ожидал такого :_ Я ещё сделал так, чтобы, когда корабль убит - он весь закрашивался в цвет убитого, а не одна клетка ;) А эти жёлтые клетки на скриншоте - это "пользовательские отметки" - их можно ставить нажав на ПКМ и при этом можно так и отмечать так и убирать отметку (можно ставить на клетку с статусом - неизвестно) - сделано для того, чтобы отмечать места, где точно не может быть кораблей - я мог сделать, чтобы автоматически вокруг корабля отметки делались, но тогда играть будет менее интересно, поэтому не стал ;) Кстати сделал прозрачное поле - элегантно - просто "вырубил" делегат отображения во время старта игры и потом вернул обратно :) |
|||||
14 | ФИНАЛЬНЫЙ УРОК |
1 тест |
|||
Записать видео обзор Морского боя. созданного на этом курсе. Отчёт отправил: 12230. LINKI Выполнено за 4 час. 00 мин. [Показать отчёт] Научился: +К практике Сложности: Найти время на выполнение. Долго болел - не мог делать, температура было :( Комментарии: Очень понравился курс "Морской Бой". Но VIP уроки я наверное сделать не смогу, так как их 2 и следующий открывается после набирания предыдущего 16 лайков :), а мне осталось до 31. Печалька :_ / Хотя может быть VIP уроки выполняются ВНЕ курса - то есть срок закончится, а выполнять VIP уроки можно будет? Кстати. Я после того, как вылечился, за 1 ВЕЧЕР СДЕЛАЛ ЭТОТ МОНТАЖ. Это даже удивило 0_0 :) Видеообзор: cOjxEzZqkw4 |
|||||
15 | VIP. Анимированный кружок |
|
|||
На этом уроке мы создадим двигающийся кружок, из которого потом сделаем анимированый кубик. Задание: Создать два класса с наследованием. Сделать плавное перемещение кружка. Отчёт отправил: 12230. LINKI Выполнено за 40 мин. [Показать отчёт] Научился: +Практика работы с графикой Сложности: null Комментарии: Классно получилось. Можно было-бы сделать перерисовку так - box.Refrash(); :) Я ещё сделал, чтобы на паузу анимацию можно поставить было :) |
|||||
16 | VIP. Анимированный кубик |
|
|||
На этом уроке мы создадим массив из кружков, они будут сначала двигаться случайно, похоже на бильярд. Дальше мы создадим правила для их передвижения и в конечном итоге реализуем анимированный игральный кубик. Задание: Нарисовать верхнюю сторону игрального кубика с шестью анимированными точками для смены чисел. Отчёт отправил: 12230. LINKI Выполнено за 1 час. 28 мин. [Показать отчёт] Научился: Реализация Сложности: null Комментарии: Классно получилось! НА ЗАМЕТКУ (БУДЕТ ПОЛЕЗНО): Можно не создавать Brush! А просто сделать так - pen.Brush; ;D |
|||||
Итого: 16 видеоуроков |
9 час. 36 мин. 7 тестов |
14 чел. | |||
Финалисты: Алексей В., Ильшат, Станислав, Tekashnik, Новопашин Владимир, LINKI, Dimon, Yefim, chokayes, Николай Денисов, Максим Лапшинов, Александр, vip, MaxB . |