# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 |
![]() |
|
|||
Мы начинаем создание популярной игры сапёр. Эта игра - отличное урпажнение для начинающего программиста. Отчёт отправил: 17663. Oleksandr Выполнено за 16 час. 49 мин. [Показать отчёт] Научился: Рисовать блок-схемы на https://www.draw.io/. Лучше понял структуру предстоящего проекта. Выполнил физическое упражнение. Давно заметил что поднятие подбородка и расправленные плечи меняют настрой. Главное про это помнить. Ну а теперь - погнали! |
|||||
2 | ИГРА - Минная картотека |
1 тест |
|||
На этом уроке мы проанализируем блок-схему проекта подготовим форму для проекта, загрузим все картинки. Отчёт отправил: 17663. Oleksandr Выполнено за 27 мин. [Показать отчёт] Научился: Улучшил знания по рисованию блок-схем. Очень много не учел при рисовании на прошлом уроке. Спасибо отдельное Елене и за картинки и за сайт. Сложности: Придумать тест |
|||||
3 | ИГРА - Классные мины |
|
|||
На этом уроке мы создадим класс Mines, в котором опишем все необходимые константы и напишем функции Init(), PlaceMines(), PlaceCounter(). Отчёт отправил: 17663. Oleksandr Выполнено за 1 час. 46 мин. [Показать отчёт] Научился: Понравился алгоритм добавления мины и сразу проверки/изменения значений соседних клеток. Вообще огонь. Интересно как мы будем реализовывать сетку из плиток - наверное маленькими пикчербоксами. Сложности: Впервые столкнулся когда мы в условие цикла while ставим изменение значения. Немного напугало меня). |
|||||
4 | ИГРА - Матрица картинок |
1 тест |
|||
На этом уроке мы сделаем вывод картинок на экран. Для этого мы напишем функцию PlaceBox(), которая будет создавать катинки и размещать их на панель. Потом мы создадим матрицу картинок. В конце урока мы сделаем автоматическое изменение картинок при ресайзинге формы. Отчёт отправил: 17663. Oleksandr Выполнено за 56 мин. [Показать отчёт] Научился: Отличный урок. Научился динамически добавлять элементы на форму. Также сделал автоматический ресайзинг по окончанию изменения размера формы. Ну и все то что было на уроке. Отобразить размещенные мины пока не берусь. |
|||||
5 | ИГРА - Карта минного поля |
|
|||
На этом уроке мы отобразим минное поле. Для это нам потребуется функция private Bitmap ShowPicture (int number) и private void ShowBox (int x, int y, int number) а также делегаты для их вызова из класса Mines. Отчёт отправил: 17663. Oleksandr Выполнено за 1 час. 27 мин. [Показать отчёт] Научился: Выполнил все действия за игромистром и реализовал все что надо. Но, не прошел в предыдущем курсе допурок по делегатам и потому не понял реализацию делегата. Поэтому пошел допроходить прошлый курс. Сложности: В функции PlaceCounter закопипастил проверку "у" на выход за граничные значения, из-за этого постоянно вылазили ошибки. Час убил на то чтоб заменить х на у. Зато на своем опыте понял почему все говорят что копипаст зло. Становлюсь мудрее. |
|||||
6 | ИГРА - Зелёный флаг |
1 тест |
|||
На этом уроке мы сделаем обработку клика правой кнопкой мышки для установки флага. Для этого нам потребуется сохранять и считывать координаты клетки в поле Tag каждого PictureBox. Отчёт отправил: 17663. Oleksandr Выполнено за 2 час. 15 мин. [Показать отчёт] Научился: Долго не мог пройти этот урок. Выдавалась непонятная ошибка с которой так и не смог разобраться. Пришлось переделывать последних два урока. Но после повторной реализации все заработало - УРА! Придумал свой способ получения Х и У - через Location. int x = ((PictureBox)sender).Location.X / widthBox; int y = ((PictureBox)sender).Location.Y / heightBox; |
|||||
7 | ИГРА - Алгоритмический подход |
1 тест |
|||
На этом уроке мы напишем основную часть алгоритма обработки левой кнопки мышки. Мы разделим эту задачу на несколько вспомогательных функций, которые вы можете реализовать самтостоятельно. Отчёт отправил: 17663. Oleksandr Выполнено за 21 час. 9 мин. [Показать отчёт] Научился: Написал основной алгоритм для клика левой кнопки. Урок очень наглядно продемонстрировал полезность (обязательность) написания подробной блок-схемы. Из дополнительных функций получилось реализовать две. |
|||||
8 | ИГРА - Бомбовые алгоритмы |
1 тест |
|||
На этом уроке мы допишем остальные функции и поиграем в созданную игру. Вам останется довести программу до ума, сделать сообщение об окончании игры и все остальные элементы игры, по желанию и по фантазии. Отчёт отправил: 17663. Oleksandr Выполнено за 2 дня 23 час. 25 мин. [Показать отчёт] Научился: Исправил свои написанные функции и реализовал оставшиеся. Пока конечно трудновато и есть моменты которые не понятны до конца. Но потихоньку движемся. Посмотрим как будет с ботом - ибо он самоцель. От себя сделал проверку на победу по закрытию всех мин флажками и перенес проверки на окончание игры в обработку клика мышкой. Сложности: Рекурсия и проход по смежным клеткам. Взаимодействие с локальным классом. |
|||||
9 | ТРЕТЬФИНАЛЬНЫЙ УРОК |
без видео 1 тест |
|||
Поздравляю с завершением курса по созданию игры Сапёр. Однако создание игры на этом ещё не закончено. Твоя задача - придумать, что ещё можно/нужно добавить в игру и реализовать это. Запиши видеообзор своей игры и расскажи, что ты добавил в неё самостоятельно. Отчёт отправил: 17663. Oleksandr Выполнено за 12 мин. [Показать отчёт] Научился: К сожалению объем того что нужно добавить в игру для показа в продакшене огромен и к сожалению текущих знаний не хватает что-бы все реализовать. Дополнительно реализовал: - проверку на победу по закрытию всех мин флажками - перенес проверки на окончание игры в обработку клика мышкой - при клике ЛКМ на мину сделал отображение ее красной. Запись видео пропущу ибо программа получилась куцая и пока месть сложная для меня. |
|||||
10 | ИИ - Как пройти игру |
1 тест |
|||
Мы начинаем создание Искусственного Интеллекта для игры Сапёр, для чего нам потребуется несколько этапов. 1. Описание и понимание идеи алгоритма. 2. Ручная проработка алгоритма на практике. 3. Создание класса для логики ИИ. 4. Внедрение его в наш проект для тестирования. 5. Создание бота для чужой игры Сапёр. Отчёт отправил: 17663. Oleksandr Выполнено за 16 мин. [Показать отчёт] Научился: Начну с конца, со способа считывания: - Делаем скриншот программы. - Зная размеры поля и ячейки считываем цвет пикселей в заданных точках каждой ячейки. - Каждая цифра и элемент имеют свой цвет или сочетание цветов. - На основании цвета составляем матрицу поля для бота и уже работаем с ней. Алгоритм: - Задаем варианты действий - клики мышей, варианты считывания заданной области (чтобы не считывать все поле, а только ближайшие клетки после каждого хода). - Задаем стартовые действия: - типа открыть пока не откроется цифра или пустая область. - если мина то перезапуск игры. - первая мина всегда возле угловой единички. - Проверяем 100% варианты определения наличия мин и выставляем мины. - Подсчитываем количество мин вокруг ячейки с минимальным значением, и при соответствии открываем смежные закрытые клетки. - Переходим к следующей смежной открытой ячейке рядом с миной и тд. |
|||||
11 | ИИ - Очевидные шаги |
1 тест |
|||
На этом уроке мы отработаем базовый, самый очевидный алгоритм разминирования, который основан на открытии очевидных клеток. Отчёт отправил: 17663. Oleksandr Выполнено за 1 день 3 час. 21 мин. [Показать отчёт] Научился: Два правила позволили открыть почти все поле (скриншот). Далее уже нужны более продвинутые алгоритмы. |
|||||
12 | ИИ - Пересечение множеств |
|
|||
На этом уроке у нас будет матчасть, логика ИИ. Мы решим задачу с пересекающимися множествами через систему неравенств. Узнаем, в каком случае может быть единственный ответ, и как его просчитать простой формулой, чтобы разделить два пересекающихся множества на три непересекающихся. Отчёт отправил: 17663. Oleksandr Выполнено за 2 дня 18 час. 7 мин. [Показать отчёт] Научился: Из-за ошибки при вычислениях во время урока материал оказался трудно восприимчив. Плюс не во всех случаях алгоритм срабатывает, по крайне мере у меня. Но сам алгоритм понял и смог применить, с переменным успехом. Во всяком случае на эксперте минера прошел. |
|||||
13 | ИИ - Класс группы |
|
|||
На этом уроке мы начнём создание проекта логики бота сапёра. Мы создадим структуру с координатами клеток и опишем поля и методы класса Group, в котором будут храниться логические группы минного поля. Отчёт отправил: 17663. Oleksandr Выполнено за 58 мин. [Показать отчёт] Научился: Пока все сложно. Надеюсь в результате реализации станет понятней. Комментарии и методы написал как мог. |
|||||
14 | ИИ - Элементарные алгоритмы |
|
|||
На этом уроке мы реализуем два элементарных алгоритма определения пустых клеток и клеток с минами, а также проверим, как это работает. Отчёт отправил: 17663. Oleksandr Выполнено за 21 час. 18 мин. [Показать отчёт] Научился: Создал методы но вылазят ошибки с прошлого урока по созданию операторов сравнения в структуре. К сожалению не знаю как побороть - надеюсь, что при переносе в нашего минера пропадут. |
|||||
15 | ИИ - Жучкин алгоритм |
1 тест |
|||
На этом уроке мы внедрим наш элементарный алгоритм в рабочую программу и создадим кнопочку, по нажатию которой будут отмечаться все явные мины и пустые клетки. Минут 15 в уроке ушло на поиск ошибки. Отчёт отправил: 17663. Oleksandr Выполнено за 20 час. 24 мин. [Показать отчёт] Научился: Ура, получилось! Я счастлив. Работает!!! Далеко не все понятно. Но и такому результату я рад. Хоть ошибка из предыдущих уроков осталась, но на результат не влияет. По совету формулистов приложу скришот, если кто сталкивался, прошу помочь советом. |
|||||
16 | ИИ - Вспомнить всё |
|
|||
На этом уроке мы вспомним и повторим, что было на прошлых уроках. Для чего нужен класс Group и как он используется для поиска мин на карте. В этом уроке мы почти ничего писать не будем, просто освежим всё в памяти. Отчёт отправил: 17663. Oleksandr Выполнено за 2 час. 14 мин. [Показать отчёт] Научился: Очень нужный урок. Помог заполнить пробелы и написать подробный комментарий. Также не маловажным было повторить алгоритм пересечения множеств. |
|||||
17 | ИИ - Операции со множествами |
5 тестов |
|||
На этом уроке мы напишем основные методы для работы со множествами: сравнение, пересечение и вычитание множеств. Отчёт отправил: 17663. Oleksandr Выполнено за 2 час. 9 мин. [Показать отчёт] Научился: Написал за автором все функции. Тесты не осилил, пошел смотреть реализацию дальше. |
|||||
18 | ИИ - Множественное тестирование |
|
|||
На этом уроке мы проведём тестирование созданных методов операций над множествами. Отчёт отправил: 17663. Oleksandr Выполнено за 2 час. 1 мин. [Показать отчёт] Научился: Супер. Тесты помогли найти ошибку в методе Intersect из прошлого урока. Так бы, кто его знает сколько времени потратил бы потом на поиски. |
|||||
19 | ИИ - Ботовый алгоритм InterMines |
1 тест |
|||
На этом уроке мы наконец-таки напишем код алгоритма, о котором мы так много говорили в предыдущих уроках. Отчёт отправил: 17663. Oleksandr Выполнено за 32 мин. [Показать отчёт] Научился: Написал функцию. Тесты проходит. Очень интересно как мы ее сейчас используем. |
|||||
20 | ИИ - Открыть всё! |
|
|||
На этом уроке мы перепишем по новому алгоритм открытия всех клеток с использованием класса Group. Ура! Открываемость минного поля значительно возросла! Это успех :) Отчёт отправил: 17663. Oleksandr Выполнено за 6 час. 41 мин. [Показать отчёт] Научился: Ура!!! И у меня получилось. Конечно не обошлось без ложки дегтя когда у меня в конце урока алгоритм не заработал. Вот у игромистра работает, он радуется, а у меня нет - все мины выбирает и из-за этого проигрыши одни. Но как всегда не доглядел, строчку одну пропустил, ошибку нашел, исправил - и вуаля я тоже в клубе победителей))). |
|||||
21 | ВТОРОЙ ТРЕТЬФИНАЛЬНЫЙ УРОК |
без видео |
|||
Поздравляю с завершением создания Искуственного Интеллекта для решения Сапёра! Ты молодец, написал искуственный интеллект, и круто прокачал навыки алгоритмического мышления, которое так важно для программиста, молодец! Запиши видеообзор созданного бота и своей программы. Впереди внедрение ИИ Бота для сторонней игры. Отчёт отправил: 17663. Oleksandr Выполнено за 14 мин. [Показать отчёт] Научился: Очень рад, что все получилось! Вторая часть далась труднее и главное, намного дольше. Но далась. Остались непонятные моменты, но их немного. Много пробелов по теории и с понедельника вернусь к изучению Троелсена. Видео, с вашего позволения, записывать не буду. Ибо очень хочу приступить к третьей части, ради которой этот курс и был начат. Так же всех с праздником! Хоть мы и не женщины, но они у всех нас есть и праздник мы с ними разделяем. |
|||||
22 | БОТ - Отмычка сапёра |
4 теста |
|||
На этом уроке мы начнём создавать настоящего бота, который будет проходить сапёра из Windows XP. Мы найдём указатель на программу, вычислим координаты окна игры, запрограммируем несколько щелчков мышкой по ней. Для работы нам потребуется именно XP версия сапёра, её можно скачать здесь: www.videosharp.info/data/docs/winmine.exe. Отчёт отправил: 17663. Oleksandr Выполнено за 1 день 4 час. 36 мин. [Показать отчёт] Научился: Все сделал + активацию окна перед нажатием. Идем дальше. |
|||||
23 | БОТ - Пиксельный металлоискатель |
4 теста |
|||
На этом уроке мы начнём создавать пиксельный металлоискатель. По цвету пикселей на экране мы будем восстанавливать значение открытой карты. Ваша задача - довести его создание до логического завершения. Отчёт отправил: 17663. Oleksandr Выполнено за 2 час. 29 мин. [Показать отчёт] Научился: Реализовал метод поиска цвета пикселя и нашел цвета цифр. Очень интересно как реализуем поиск цифр. |
|||||
24 | БОТ - Совместное фото |
|
|||
Считывание пикселя с экрана работает крайне медленно. Вместо этого было решено сделать скриншот всей программы. Чтобы дальнейшую обработку производить напрямую, а не через медленные вызовы WinAPI методов. Цель урока - создание "Совместного фото", на котором будут все возможные варианты клеток в игре. Отчёт отправил: 17663. Oleksandr Выполнено за 1 час. 47 мин. [Показать отчёт] Научился: Пока все получается. Решение с уникальным пикселем. На втором скриншоте белой точкой показан пиксель который позволяет получить цвет любой фигуры. Но у некоторых фигур (мина, флаг, 7) цвета совпадают. Поэтому делаем проверку на черный цвет, и проверяем дополнительный пиксель. |
|||||
25 | БОТ - Гадание по фото |
|
|||
На этом уроке мы проанализируем созданную фотографию, на предмет определения координат пикселей, по цвету которых можно будет однозначно определить значение в клетке сапёра. Отчёт отправил: 17663. Oleksandr Выполнено за 7 час. 44 мин. [Показать отчёт] Научился: Двойные циклы сломали мне мозг - с таким столкнулся впервые. А дальше вообще пошли запредельные сферы. Но надеюсь суть я ухватил. Посмотрим что будет дальше. |
|||||
26 | БОТ - Сканер минного поля |
|
|||
На этом уроке мы применим результаты анализа в полевых условиях на запущенном минёре. Сформируем карту по скриншоту минёра. Отчёт отправил: 17663. Oleksandr Выполнено за 1 день 40 мин. [Показать отчёт] Научился: Чем дальше тем труднее. Но справляюсь. Идем дальше. |
|||||
27 | БОТ - Выход на финишную прямую |
1 тест |
|||
На этом уроке мы проверим функциональность частей, которые нам нужно объединить. Доработаем функцию doMouseClick() чтобы она умела открывать клетки и ставить флажки по указанным координатам клеток. Посмотрим, что необходимо переносить из предыдущего проекта. Отчёт отправил: 17663. Oleksandr Выполнено за 2 час. 55 мин. [Показать отчёт] Научился: Метод нажатия доработал. Проверил. Объеденять все сам не решаюсь. |
|||||
28 | БОТ - Неуправляемый Интеллект |
|
|||
На этом уроке мы внесём все необходимые изменения и запустим алгоритм. К сожалению, он зациклился, в результате чего пришлось выходить из системы. Но первый результат обнадёживает - клики Анализатор делал верные. Отчёт отправил: 17663. Oleksandr Выполнено за 2 дня 1 час. 18 мин. [Показать отчёт] Научился: Сбесившегося бота смог победить с помощью диспетчера задач. Но мне кажется должно быть сочетание клавиш для студии которое принудительно останавливает запущенное приложение. |
|||||
29 | БОТ - Всё открыто! |
|
|||
На этом уроке мы завершим создание бота и откроем все клетки минного поля с помощью нашего алгоритма. Отчёт отправил: 17663. Oleksandr Выполнено за 2 дня 3 час. 45 мин. [Показать отчёт] Научился: Супер - мы победили! Хоть курс и получился самым трудным на текущий момент, но и знаний дал он немало. И удовлетворения от полного прохождения более чем. Осталось применить знания на практике и реализовать своего бота. Хочу сделать бота рыбалки, для начала. ;) Евгению Витольдовичу огромное человеческое спасибо! |
|||||
30 | ФИНАЛЬНЫЙ УРОК |
без видео |
|||
Поздравляю! Ты одолел Боты Минёра. Теперь ты заслуженный Минёр. Запиши видеообзор своих программ. Какой видеокурс ты будешь проходить следующим? |
|||||
31 | VIP - Хакерский подход |
|
|||
На этом уроке мы напишем хакерскую программу для вскрытия Сапёрного поля. | |||||
32 | VIP - Жизнь у Сапёра |
|
|||
Напишите Игру жизнь. Отобразите её на поле игры "Сапёр". Для переключения клеток используйте клики ПКМ по клеткам. |
|||||
Итого: 32 видеоурока |
10 час. 56 мин. 24 теста |
7 чел. | |||
Финалисты: Иван Воронин, Кирилл Шмойлов, Tekashnik, Yefim, Максим Лапшинов, MaxB, Алексей В. . |