# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 |
![]() |
|
|||
Мы начинаем создание популярной игры сапёр. Эта игра - отличное урпажнение для начинающего программиста. Отчёт отправил: 11589. Yefim Выполнено за 2 дня 23 час. 14 мин [Показать отчёт] Научился: Рисовать Блок-схему игры Сапер Сложности: Рисовать Блок-схему игры Сапер |
|||||
2 | ИГРА - Минная картотека |
1 тест |
|||
На этом уроке мы проанализируем блок-схему проекта подготовим форму для проекта, загрузим все картинки. Отчёт отправил: 11589. Yefim Выполнено за 58 мин. [Показать отчёт] Научился: Узнал о новых возможностях игры. Сложности: Все было ясно |
|||||
3 | ИГРА - Классные мины |
|
|||
На этом уроке мы создадим класс Mines, в котором опишем все необходимые константы и напишем функции Init(), PlaceMines(), PlaceCounter(). Отчёт отправил: 11589. Yefim Выполнено за 5 час. 2 мин. [Показать отчёт] Научился: Сoздавать клaсс Mines. Сложности: Ничего |
|||||
4 | ИГРА - Матрица картинок |
1 тест |
|||
На этом уроке мы сделаем вывод картинок на экран. Для этого мы напишем функцию PlaceBox(), которая будет создавать катинки и размещать их на панель. Потом мы создадим матрицу картинок. В конце урока мы сделаем автоматическое изменение картинок при ресайзинге формы. Отчёт отправил: 11589. Yefim Выполнено за 2 час. 55 мин. [Показать отчёт] Научился: Повторил динамическое создание картинок Сложности: Не было сложностей |
|||||
5 | ИГРА - Карта минного поля |
|
|||
На этом уроке мы отобразим минное поле. Для это нам потребуется функция private Bitmap ShowPicture (int number) и private void ShowBox (int x, int y, int number) а также делегаты для их вызова из класса Mines. Отчёт отправил: 11589. Yefim Выполнено за 2 час. 14 мин. [Показать отчёт] Научился: Сoздавать фyнкции ShowPicture () и ShowBox() Сложности: Понять, почему отказались от enum. Без него код менее читабелен. |
|||||
6 | ИГРА - Зелёный флаг |
1 тест |
|||
На этом уроке мы сделаем обработку клика правой кнопкой мышки для установки флага. Для этого нам потребуется сохранять и считывать координаты клетки в поле Tag каждого PictureBox. Отчёт отправил: 11589. Yefim Выполнено за 1 час. 29 мин. [Показать отчёт] Научился: Обрабатывать минное поле Сложности: Не наступить на мину |
|||||
7 | ИГРА - Алгоритмический подход |
1 тест |
|||
На этом уроке мы напишем основную часть алгоритма обработки левой кнопки мышки. Мы разделим эту задачу на несколько вспомогательных функций, которые вы можете реализовать самтостоятельно. Отчёт отправил: 11589. Yefim Выполнено за 1 день 36 мин. [Показать отчёт] Научился: Описывать алгоритм функции OpenBox(). Сложности: Вынужден был создать enum |
|||||
8 | ИГРА - Бомбовые алгоритмы |
1 тест |
|||
На этом уроке мы допишем остальные функции и поиграем в созданную игру. Вам останется довести программу до ума, сделать сообщение об окончании игры и все остальные элементы игры, по желанию и по фантазии. Отчёт отправил: 11589. Yefim Выполнено за 7 час. 17 мин. [Показать отчёт] Научился: Реализовывать оставшиеся функции. Как видно из урока, сообщение о завершении игры появляется в цикле. Я переместил его в обработчик левой кнопки мыши. Кроме того, поскольку завершение игры предполагает два варианта (выигрыш и проигрыш), то для этой цели я ввел enum . Сложности: Вывести корректное сообщение о завершении игры. |
|||||
9 | ТРЕТЬФИНАЛЬНЫЙ УРОК |
без видео 1 тест |
|||
Поздравляю с завершением курса по созданию игры Сапёр. Однако создание игры на этом ещё не закончено. Твоя задача - придумать, что ещё можно/нужно добавить в игру и реализовать это. Запиши видеообзор своей игры и расскажи, что ты добавил в неё самостоятельно. Отчёт отправил: 11589. Yefim Выполнено за 3 дня 12 час. 9 мин. [Показать отчёт] Научился: Создавать настройки игры. Создал корректный вывод сообщения о завершении игры. Сложности: Переделать конструктор класса для использования настроек. Видеообзор: dldSYgirYJ0 |
|||||
10 | ИИ - Как пройти игру |
1 тест |
|||
Мы начинаем создание Искусственного Интеллекта для игры Сапёр, для чего нам потребуется несколько этапов. 1. Описание и понимание идеи алгоритма. 2. Ручная проработка алгоритма на практике. 3. Создание класса для логики ИИ. 4. Внедрение его в наш проект для тестирования. 5. Создание бота для чужой игры Сапёр. Отчёт отправил: 11589. Yefim Выполнено за 1 час. 50 мин. [Показать отчёт] Научился: Искусственный интеллект - это круто! Сложности: Из слов Евгения Витольдовича следует что задача эта - несложная. Но как говорил наш школьный математик: "Любая задача лёгкая, если знаешь как ее решать." Или художником быть просто: надо просто нужную краску класть на нужное место. В любом случае наша задача разбивается на 2. Считывание информации(моих знаний явно недостаточно) и сам алгоритм на основе считанной информации (имею представление). Я заинтригован.С нетерпением жду следующих уроков. |
|||||
11 | ИИ - Очевидные шаги |
1 тест |
|||
На этом уроке мы отработаем базовый, самый очевидный алгоритм разминирования, который основан на открытии очевидных клеток. Отчёт отправил: 11589. Yefim Выполнено за 1 час. 14 мин. [Показать отчёт] Научился: Все знакомо. Сложности: Выбрать первую клетку |
|||||
12 | ИИ - Пересечение множеств |
|
|||
На этом уроке у нас будет матчасть, логика ИИ. Мы решим задачу с пересекающимися множествами через систему неравенств. Узнаем, в каком случае может быть единственный ответ, и как его просчитать простой формулой, чтобы разделить два пересекающихся множества на три непересекающихся. Отчёт отправил: 11589. Yefim Выполнено за 1 день 13 час. [Показать отчёт] Научился: Делить два пересекающихся множества на три непересекающихся. Сложности: Главная идея понятна. Однако, некоторые детали ускользают. Особенно неясно как выбирать множества и, главное, - как вычислять величины:|A| и |C|. |
|||||
13 | ИИ - Класс группы |
|
|||
На этом уроке мы начнём создание проекта логики бота сапёра. Мы создадим структуру с координатами клеток и опишем поля и методы класса Group, в котором будут храниться логические группы минного поля. Отчёт отправил: 11589. Yefim Выполнено за 3 час. 21 мин. [Показать отчёт] Научился: Создавать структуру Coord и класс Group Сложности: Если мы предполагаем, что в методе Group Intersect(Group A, Group C) группы будут изменяться, то не следует ли параметры А и С описываить с модификатором out? |
|||||
14 | ИИ - Элементарные алгоритмы |
|
|||
На этом уроке мы реализуем два элементарных алгоритма определения пустых клеток и клеток с минами, а также проверим, как это работает. Отчёт отправил: 11589. Yefim Выполнено за 19 час. 59 мин. [Показать отчёт] Научился: Сoздавать мeтоды GetFlags() и GetEmpty(). Сложности: --- |
|||||
15 | ИИ - Жучкин алгоритм |
1 тест |
|||
На этом уроке мы внедрим наш элементарный алгоритм в рабочую программу и создадим кнопочку, по нажатию которой будут отмечаться все явные мины и пустые клетки. Минут 15 в уроке ушло на поиск ошибки. Отчёт отправил: 11589. Yefim Выполнено за 1 день 22 час. [Показать отчёт] Научился: Внeдрять двa файла в рaбочyю прoгpаммy. Сложности: Когда в обработчик кнопки Hint вставил вставил цикл do-while долго не мог понять почему не отображаются флажки. Оказалось, что, видимо, моя версия VS в таких случаях требует вставки в цикл строки Application.DoEvents(); |
|||||
16 | ИИ - Вспомнить всё |
|
|||
На этом уроке мы вспомним и повторим, что было на прошлых уроках. Для чего нужен класс Group и как он используется для поиска мин на карте. В этом уроке мы почти ничего писать не будем, просто освежим всё в памяти. Отчёт отправил: 11589. Yefim Выполнено за 3 час. 27 мин. [Показать отчёт] Научился: Пoвтоpил алгоритм пeрeсeчeния множeств. Сложности: Словесно описывать алгоритм |
|||||
17 | ИИ - Операции со множествами |
5 тестов |
|||
На этом уроке мы напишем основные методы для работы со множествами: сравнение, пересечение и вычитание множеств. Отчёт отправил: 11589. Yefim Выполнено за 1 час. 36 мин. [Показать отчёт] Научился: Реализовывать функции SameTest(), Minus(), Intersect() Сложности: Понять зачем в методе Intersect() нужно 2 цикла. |
|||||
18 | ИИ - Множественное тестирование |
|
|||
На этом уроке мы проведём тестирование созданных методов операций над множествами. Отчёт отправил: 11589. Yefim Выполнено за 1 день 17 час. [Показать отчёт] Научился: Проводить тестирование Свои тесты я привел в отчете за предыдущий урок. Сложности: --- |
|||||
19 | ИИ - Ботовый алгоритм InterMines |
1 тест |
|||
На этом уроке мы наконец-таки напишем код алгоритма, о котором мы так много говорили в предыдущих уроках. Отчёт отправил: 11589. Yefim Выполнено за 1 день 10 час. [Показать отчёт] Научился: Реализовывать алгоритм InterMines(...) Здорово получилось!!! Сложности: Я ввел привычные имена множеств АВ, ВС, и В вместо g1, g2,g3 |
|||||
20 | ИИ - Открыть всё! |
|
|||
На этом уроке мы перепишем по новому алгоритм открытия всех клеток с использованием класса Group. Ура! Открываемость минного поля значительно возросла! Это успех :) Отчёт отправил: 11589. Yefim Выполнено за 2 час. 7 мин. [Показать отчёт] Научился: То, что мы сделали поражает воображение!!! Когда-то давно, увлекшись этой игрой, интуитивно я чувствовал, что должен существовать алгоритм, открывающий не столь очевидные клетки.Однако руки не доходили, что бы разобраться с этим самостоятельно. И вот пришло время и, благодаря этому курсу, мечта осуществилась. Не все детали еще улеглись в голове. Но это дело времени. Прочитал статью в хабре. Но в ней не так все четко, как это предсатвил Игромистр! Браво, Евгений Витольдович! Сложности: --- |
|||||
21 | ВТОРОЙ ТРЕТЬФИНАЛЬНЫЙ УРОК |
без видео |
|||
Поздравляю с завершением создания Искуственного Интеллекта для решения Сапёра! Ты молодец, написал искуственный интеллект, и круто прокачал навыки алгоритмического мышления, которое так важно для программиста, молодец! Запиши видеообзор созданного бота и своей программы. Впереди внедрение ИИ Бота для сторонней игры. Отчёт отправил: 11589. Yefim Выполнено за 12 час. 12 мин. [Показать отчёт] Научился: Урок называется ВТОРОЙ ТРЕТЬФИНАЛЬНЫЙ УРОК Как при этом радоваться финалу? Сложности: Преждевременно Пoрaдоваться финaлу. Видеообзор: X9Z8JqR7PIQ |
|||||
22 | БОТ - Отмычка сапёра |
4 теста |
|||
На этом уроке мы начнём создавать настоящего бота, который будет проходить сапёра из Windows XP. Мы найдём указатель на программу, вычислим координаты окна игры, запрограммируем несколько щелчков мышкой по ней. Для работы нам потребуется именно XP версия сапёра, её можно скачать здесь: www.videosharp.info/data/docs/winmine.exe. Отчёт отправил: 11589. Yefim Выполнено за 2 час. 56 мин. [Показать отчёт] Научился: Кликать программно мышкой Шикарный урок! Сложности: --- |
|||||
23 | БОТ - Пиксельный металлоискатель |
4 теста |
|||
На этом уроке мы начнём создавать пиксельный металлоискатель. По цвету пикселей на экране мы будем восстанавливать значение открытой карты. Ваша задача - довести его создание до логического завершения. Отчёт отправил: 11589. Yefim Выполнено за 22 час. 14 мин. [Показать отчёт] Научился: Читать пиксели на экране. Вернул форму в проект и с ее помощью проверил алгоритм перевода цвета в номер клетки Сложности: Определить точно точки зондирования |
|||||
24 | БОТ - Совместное фото |
|
|||
Считывание пикселя с экрана работает крайне медленно. Вместо этого было решено сделать скриншот всей программы. Чтобы дальнейшую обработку производить напрямую, а не через медленные вызовы WinAPI методов. Цель урока - создание "Совместного фото", на котором будут все возможные варианты клеток в игре. Отчёт отправил: 11589. Yefim Выполнено за 7 час. 5 мин. [Показать отчёт] Научился: Программировать скриншот окна. Сложности: --- |
|||||
25 | БОТ - Гадание по фото |
|
|||
На этом уроке мы проанализируем созданную фотографию, на предмет определения координат пикселей, по цвету которых можно будет однозначно определить значение в клетке сапёра. Отчёт отправил: 11589. Yefim Выполнено за 21 час. 0 мин. [Показать отчёт] Научился: Формировать массив с информацией главных героев Сложности: Не все получилось сразу |
|||||
26 | БОТ - Сканер минного поля |
|
|||
На этом уроке мы применим результаты анализа в полевых условиях на запущенном минёре. Сформируем карту по скриншоту минёра. Отчёт отправил: 11589. Yefim Выполнено за 6 дней 17 час. 6 мин. [Показать отчёт] Научился: Сканировать минное поле как с картинки так и с реальной игры Отличный урок! Сложности: На моем мониторе не было проблем. Но я все-таки реализовал функцию CompareColors(...) |
|||||
27 | БОТ - Выход на финишную прямую |
1 тест |
|||
На этом уроке мы проверим функциональность частей, которые нам нужно объединить. Доработаем функцию doMouseClick() чтобы она умела открывать клетки и ставить флажки по указанным координатам клеток. Посмотрим, что необходимо переносить из предыдущего проекта. Отчёт отправил: 11589. Yefim Выполнено за 17 час. 54 мин. [Показать отчёт] Научился: Программно открывать клетки и ставить флажки по указанным координатам клеток. Сложности: --- |
|||||
28 | БОТ - Неуправляемый Интеллект |
|
|||
На этом уроке мы внесём все необходимые изменения и запустим алгоритм. К сожалению, он зациклился, в результате чего пришлось выходить из системы. Но первый результат обнадёживает - клики Анализатор делал верные. Отчёт отправил: 11589. Yefim Выполнено за 2 дня 1 час. 29 мин. [Показать отчёт] Научился: Как не надо делать Урок оказался с сюрпризом... Сложности: Остановить Вакханалию программ. Было явно не до смеха. Хорошо что обошлось "малой кровью" В сомнительных циклах всегда надо предусматривать аварийный выход. Отрицательный результат - тоже результат! |
|||||
29 | БОТ - Всё открыто! |
|
|||
На этом уроке мы завершим создание бота и откроем все клетки минного поля с помощью нашего алгоритма. Отчёт отправил: 11589. Yefim Выполнено за 1 день 11 час. 42 мин. [Показать отчёт] Научился: Ставить умопомpачитeльные peкоpды на всех уровнях Сапёра Сложности: Почему-то разовые клики по кнопке Start Bot работают почти нормально (по крайней мере на мины не нарываются). Однако, запуск в цикле рано или поздно нарывается на мину. Непонятно почему. |
|||||
30 | ФИНАЛЬНЫЙ УРОК |
без видео |
|||
Поздравляю! Ты одолел Боты Минёра. Теперь ты заслуженный Минёр. Запиши видеообзор своих программ. Какой видеокурс ты будешь проходить следующим? Отчёт отправил: 11589. Yefim Выполнено за 4 дня 10 час. 29 мин. [Показать отчёт] Научился: Не все так просто, как может показаться на первый взгляд. Я честно и добросоветсно пытался сделать финальный видео-обзор, однако, столкнулся с пока непреодолимыми трудностями. Вот ссылки на мои промежутоянные видео обзоры. https://www.videosharp.info/11589/checking/sweep=1035/show=video https://youtu.be/X9Z8JqR7PIQ Сложности: Рано или поздно мой Бот нарывается на мину, особенно при поединке с профессионалом. Интересно то, что тот же Бот в программе SharpSweeper работает безупречно. Вероятно, где-то закралась ошибка. Пока я ее не нашел. Решил запустить программу на другом компьютере, рассчитывая получить аналогичный результат. Но и тут меня ожидал сюрприз: Программа не генерирует Клики. Т.е никак не реагирует на сапера. Чем это можно объяснить? Не смотря ни на что, курс получился шикарный. Мои ожидания вполне оправдались. Огромное СПАСИБО Евгнению Витольдовичу! А я продолжу поиск ошибки. Моим следующим курсом будет Морской флот. |
|||||
31 | VIP - Хакерский подход |
|
|||
На этом уроке мы напишем хакерскую программу для вскрытия Сапёрного поля.
Отчёт отправил: 11589. Yefim Выполнено за 2 час. 27 мин. [Показать отчёт] Научился: Шикарнейший, безценный, урок. Научился некоторым хакерским приёмам! Сложности: Я обратил внимание, что последняя нижняя строка не обрабатывается. Я закоментировал 2 строки: //x = (rct.Width - rct.Left )/ 16 - 1; //y = (rct.Height - rct.Top) / 16 - 7; а функцию обрабатывал кнопкой: private void button1_Click(object sender, EventArgs e) { OpenMap(); } Правда, одного (первого) клика недостаточно (вероятно не определены ещё x и y). После второго клика все обрабатывается нормально. |
|||||
32 | VIP - Жизнь у Сапёра |
|
|||
Напишите Игру жизнь. Отобразите её на поле игры "Сапёр". Для переключения клеток используйте клики ПКМ по клеткам. Отчёт отправил: 11589. Yefim Выполнено за 1 день 1 час. 2 мин. [Показать отчёт] Научился: Моделировать игру Жизнь. Интересная тема. Ее можно развивать с учетом различия полов и продолжительности жизни. Сложности: Не понял явление последних 5 минут видео. Кадр последние 5 минут не менялся |
|||||
Итого: 32 видеоурока |
10 час. 56 мин. 24 теста |
7 чел. | |||
Финалисты: Иван Воронин, Кирилл Шмойлов, Tekashnik, Yefim, Максим Лапшинов, MaxB, Алексей В. . |