Изучение c# на примерах

Формула программиста
основатель — Волосатов Евгений Витольдович

Боты Сапёра

Сначала мы напишем игру Сапёр.
Потом напишем алгоритм ИИ поиска мин.
И наконец создадим Бота для прохождения
программы MineSweeper от Microsoft.
На вип-уроке будет хакерский бот.



32 урока
10 часов 56 минут.

Хочу купить!

Купить в рассрочку за мегахеши

Цена: 2000 p.


Список уроков | фото | видео

# Название видеоурока Решило Рейтинг Доступ
1 ИГРА - Счастливый сапёр 00:10:45 28 чел. ★ 4.9 Done
  Мы начинаем создание популярной игры сапёр.
Эта игра - отличное урпажнение для начинающего программиста.

Отчёт отправил: 7119. Новопашин Владимир Выполнено за 45 мин. [Показать отчёт]
Научился: Еще раз поиграл в сапера. 
Сложности: Скачать сапера для Win10. 
Комментарии: Сделал упражнение. Сложно думать о хорошем когда согнулся в три погибели и думат о плохом смотря на солнце. 
2 ИГРА - Минная картотека 00:11:57 24 чел. ★ 5 Done
  На этом уроке мы проанализируем блок-схему проекта
подготовим форму для проекта, загрузим все картинки.
Отчёт отправил: 7119. Новопашин Владимир Выполнено за 1 час. 00 мин. [Показать отчёт]
Научился: Пока ничему. 
Сложности: Ничего. 
Комментарии: Идем дальше. 
3 ИГРА - Классные мины 00:20:47 22 чел. ★ 5 Done
  На этом уроке мы создадим класс Mines,
в котором опишем все необходимые константы
и напишем функции Init(), PlaceMines(), PlaceCounter().

Отчёт отправил: 7119. Новопашин Владимир Выполнено за 1 час. 32 мин. [Показать отчёт]
Научился: Научился создавать класс Mines на C#. 
Сложности: Рановато для сложностей. 
Комментарии: Ура! Сбылась мечта идиота - подсознательно хотел сделать эту игру. 
4 ИГРА - Матрица картинок 00:25:08 22 чел. ★ 5 Done
  На этом уроке мы сделаем вывод картинок на экран.
Для этого мы напишем функцию PlaceBox(),
которая будет создавать катинки и размещать их на панель.
Потом мы создадим матрицу картинок.
В конце урока мы сделаем автоматическое
изменение картинок при ресайзинге формы.
Отчёт отправил: 7119. Новопашин Владимир Выполнено за 1 час. 16 мин. [Показать отчёт]
Научился: Научился отображать плашки. 
Сложности: Ничего. 
Комментарии: Жду божественного алгоритма открытия свободного пространства. 
5 ИГРА - Карта минного поля 00:19:35 21 чел. ★ 5 Done
  На этом уроке мы отобразим минное поле.
Для это нам потребуется функция
private Bitmap ShowPicture (int number) и
private void ShowBox (int x, int y, int number)
а также делегаты для их вызова из класса Mines.
Отчёт отправил: 7119. Новопашин Владимир Выполнено за 2 час. 15 мин. [Показать отчёт]
Научился: Создавать массив для вывода сапера. 
Сложности: Ничего. 
Комментарии: Игра оживает и это радует. 
6 ИГРА - Зелёный флаг 00:17:40 21 чел. ★ 5 Done
  На этом уроке мы сделаем обработку клика
правой кнопкой мышки для установки флага.
Для этого нам потребуется сохранять и считывать
координаты клетки в поле Tag каждого PictureBox.
Отчёт отправил: 7119. Новопашин Владимир Выполнено за 1 час. 54 мин. [Показать отчёт]
Научился: Научился маркировать и открывать клетки. 
Сложности: Ничего. 
Комментарии: Осталось совсем немного - открывать пустые клетки и будет счастье. 
7 ИГРА - Алгоритмический подход 00:13:27 21 чел. ★ 5 Done
  На этом уроке мы напишем основную часть
алгоритма обработки левой кнопки мышки.
Мы разделим эту задачу на несколько
вспомогательных функций, которые
вы можете реализовать самтостоятельно.
Отчёт отправил: 7119. Новопашин Владимир Выполнено за 30 мин. [Показать отчёт]
Научился: Написал заглушки для методов согласно алгоритма. 
Сложности: Ничего. 
Комментарии: На шажок ближе к цели. 
8 ИГРА - Бомбовые алгоритмы 00:29:29 20 чел. ★ 5 Done
  На этом уроке мы допишем остальные функции и поиграем в созданную игру.
Вам останется довести программу до ума,
сделать сообщение об окончании игры и
все остальные элементы игры,
по желанию и по фантазии.
Отчёт отправил: 7119. Новопашин Владимир Выполнено за 4 час. 38 мин. [Показать отчёт]
Научился: Научился доводить до ума игру "Сапер" 
Сложности: Самое сложное было это выяснить, почему при рестарте (я добавил кнопку на форму) не перерисовывались боксики. 
Комментарии: Рекурсия действительно божественна. Получилось все очень кратко и компактно - остается до ума доводить. Супер - ай да Магистр!! 
9 ТРЕТЬФИНАЛЬНЫЙ УРОК 20 чел. ★ 5 Done
  Поздравляю с завершением курса по созданию игры Сапёр.
Однако создание игры на этом ещё не закончено.
Твоя задача - придумать, что ещё можно/нужно
добавить в игру и реализовать это.
Запиши видеообзор своей игры и расскажи,
что ты добавил в неё самостоятельно.
Отчёт отправил: 7119. Новопашин Владимир Выполнено за 24 час. 00 мин. [Показать отчёт]
Научился: Научился отлавливать косяки в сапер - вообще было круто - до сих пор под впечателением. 
Сложности: Да ничего такого. 
Комментарии: Игра супер. Буду думать как ее дальше облагородить - главное шаблон есть, а дальше можно развивать как душе угодно. 
Видеообзор: https://youtu.be/_N-aoXUnoWo
10 ИИ - Как пройти игру 00:03:38 19 чел. ★ 4.9 Done
  Мы начинаем создание Искусственного Интеллекта для игры Сапёр,
для чего нам потребуется несколько этапов.
1. Описание и понимание идеи алгоритма.
2. Ручная проработка алгоритма на практике.
3. Создание класса для логики ИИ.
4. Внедрение его в наш проект для тестирования.
5. Создание бота для чужой игры Сапёр.
Отчёт отправил: 7119. Новопашин Владимир Выполнено за 10 мин. [Показать отчёт]
Научился: Ничему. 
Сложности: Вообще я без понятия как считывать данные и как играть - для меня это новый опыт. 
Комментарии: Нужно сделать что-то типа FineReader, который будет считывать экран и распознавать цифры. А обрабатывать можно по подсчету цифры и открывать только те, которые явно надо открыть. У меня пока только общие представления. 
11 ИИ - Очевидные шаги 00:09:00 19 чел. ★ 5 Done
  На этом уроке мы отработаем базовый,
самый очевидный алгоритм разминирования,
который основан на открытии очевидных клеток.
Отчёт отправил: 7119. Новопашин Владимир Выполнено за 20 мин. [Показать отчёт]
Научился: Ничему. 
Сложности: Ничего - все понятно. 
Комментарии: Поиграл по этим правилам и выиграл - не попал в ситуацию "клинча". 
12 ИИ - Пересечение множеств 00:34:53 17 чел. ★ 5 Done
  На этом уроке у нас будет матчасть, логика ИИ.
Мы решим задачу с пересекающимися множествами
через систему неравенств. Узнаем, в каком
случае может быть единственный ответ,
и как его просчитать простой формулой,
чтобы разделить два пересекающихся
множества на три непересекающихся.
Отчёт отправил: 7119. Новопашин Владимир Выполнено за 24 час. 00 мин. [Показать отчёт]
Научился: Я больше 3 дней играл в сапер - потом еще раз пересмотрел видео с выкладками Евгения и я достиг катарсиса. 
Сложности: Достичь состояния катарсиса. 
Комментарии: Вообще вещь очень мощная. В основном выкладки делал в уме - у меня только в последнем случае возникли затрудения и я сделал выкладки в Notepad. 
13 ИИ - Класс группы 00:17:28 17 чел. ★ 4.9 Done
  На этом уроке мы начнём создание проекта
логики бота сапёра. Мы создадим структуру
с координатами клеток и опишем поля и
методы класса Group, в котором будут
храниться логические группы минного поля.
Отчёт отправил: 7119. Новопашин Владимир Выполнено за 43 мин. [Показать отчёт]
Научился: Научился формулировать задачи групп для бота сапера. 
Сложности: Ничего. 
Комментарии: Да тут и писать нечего - двигаемся дальше. 
14 ИИ - Элементарные алгоритмы 00:10:03 16 чел. ★ 5 Done
  На этом уроке мы реализуем два элементарных
алгоритма определения пустых клеток и клеток
с минами, а также проверим, как это работает.
Отчёт отправил: 7119. Новопашин Владимир Выполнено за 15 мин. [Показать отчёт]
Научился: Научился прописывать логику работы группы. 
Сложности: Ничего. 
Комментарии: Не в этот раз. 
15 ИИ - Жучкин алгоритм 00:39:05 16 чел. ★ 4.9 Done
  На этом уроке мы внедрим наш элементарный
алгоритм в рабочую программу и создадим
кнопочку, по нажатию которой будут
отмечаться все явные мины и пустые клетки.
Минут 15 в уроке ушло на поиск ошибки.
Отчёт отправил: 7119. Новопашин Владимир Выполнено за 10 час. 00 мин. [Показать отчёт]
Научился: Научился создавать ИИ для сапера. 
Сложности: Да поставил лишние операторские скобки и выделял все флажками - а так быть не должно - с этим долго провозился. 
Комментарии: Очень круто получилось - основную рутину за тебя этот алгоритм берет - просто супер. И главное алгоритм прост как автомат Калашникова. 
16 ИИ - Вспомнить всё 00:23:17 16 чел. ★ 5 Done
  На этом уроке мы вспомним и повторим, что было на прошлых уроках.
Для чего нужен класс Group и как он используется для поиска мин на карте.
В этом уроке мы почти ничего писать не будем, просто освежим всё в памяти.
Отчёт отправил: 7119. Новопашин Владимир Выполнено за 40 мин. [Показать отчёт]
Научился: Повторил пройденное. 
Сложности: Ничего.  
Комментарии: В очередной раз достиг катарсиса. Выполнил с удовольствием задание. Кто-нибудь может доказать методом математических вычислений или какой-либо эзотерики, где мины (см. скрин- область выделена красным)? 
17 ИИ - Операции со множествами 00:15:19 16 чел. ★ 5 Done
  На этом уроке мы напишем основные методы для работы со множествами:
сравнение, пересечение и вычитание множеств.
Отчёт отправил: 7119. Новопашин Владимир Выполнено за 40 мин. [Показать отчёт]
Научился: Научился писать новые функции для класса Group. 
Сложности: Придумать и написать тесты - не уверен, что все учел. 
Комментарии: Ура! Новый этап в ботостроении. 
18 ИИ - Множественное тестирование 00:06:46 16 чел. ★ 4.9 Done
  На этом уроке мы проведём тестирование
созданных методов операций над множествами.
Отчёт отправил: 7119. Новопашин Владимир Выполнено за 15 мин. [Показать отчёт]
Научился: Написал тесты в соответствии с уроком. 
Сложности: Ничего. 
Комментарии: Идем дальше. 
19 ИИ - Ботовый алгоритм InterMines 00:17:38 16 чел. ★ 4.9 Done
  На этом уроке мы наконец-таки напишем код алгоритма,
о котором мы так много говорили в предыдущих уроках.
Отчёт отправил: 7119. Новопашин Владимир Выполнено за 1 час. 07 мин. [Показать отчёт]
Научился: Научился однозначно определять мину с помощью метода InterMines. 
Сложности: Ничего. 
Комментарии: Нужно применить наконец-таки новый метод простановки мин.  
20 ИИ - Открыть всё! 00:21:34 16 чел. ★ 5 Done
  На этом уроке мы перепишем по новому
алгоритм открытия всех клеток с
использованием класса Group.
Ура! Открываемость минного поля значительно возросла!
Это успех :)
Отчёт отправил: 7119. Новопашин Владимир Выполнено за 1 час. 16 мин. [Показать отчёт]
Научился: Научился создавать новый бот на группах 
Сложности: Ничего 
Комментарии: Алгоритм просто божественен. Я сделал для себя уровень профессионал и конечно не всегда в одно касание открываются все мины. Иной раз нужно 2-3 раз еще приоткрыть мины - если не взорвался, то открывает всю карту - это просто супер - математика и никакого мошенничества. 
21 ВТОРОЙ ТРЕТЬФИНАЛЬНЫЙ УРОК 15 чел. ★ 5 Done
  Поздравляю с завершением создания Искуственного Интеллекта для решения Сапёра!

Ты молодец, написал искуственный интеллект,
и круто прокачал навыки алгоритмического мышления,
которое так важно для программиста, молодец!

Запиши видеообзор созданного бота и своей программы.

Впереди внедрение ИИ Бота для сторонней игры.
Отчёт отправил: 7119. Новопашин Владимир Выполнено за 2 час. 00 мин. [Показать отчёт]
Научился: Ничему. 
Сложности: Самое сложное - это сделать какой-то отзыв, чем его идеально затягивать. 
Комментарии: Конечно хотел много доделок сделать, но решил сделать отзыв, чтобы двинуться дальше. 
Видеообзор: https://youtu.be/tDVf_XjBhns
22 БОТ - Отмычка сапёра 00:31:45 15 чел. ★ 4.9 Done
  На этом уроке мы начнём создавать настоящего бота,
который будет проходить сапёра из Windows XP.
Мы найдём указатель на программу,
вычислим координаты окна игры,
запрограммируем несколько
щелчков мышкой по ней.

Для работы нам потребуется именно XP версия сапёра, её можно скачать здесь:
www.videosharp.info/data/docs/winmine.exe.
Отчёт отправил: 7119. Новопашин Владимир Выполнено за 3 час. 00 мин. [Показать отчёт]
Научился: Научился кликать внутри окна и вычислять координаты. 
Сложности: Я до сих пор не нарисовал ничего красивого - для меня в принципе проставить флажки внутри окна другой программы уже был подвиг. 
Комментарии: Для меня управление в другом окне всегда было высшей математикой, оказывается ничего сложного. Очень хороший урок. 
23 БОТ - Пиксельный металлоискатель 00:25:10 14 чел. ★ 5 Done
  На этом уроке мы начнём создавать пиксельный металлоискатель.
По цвету пикселей на экране мы будем восстанавливать значение открытой карты.
Ваша задача - довести его создание до логического завершения.
Отчёт отправил: 7119. Новопашин Владимир Выполнено за 5 час. 45 мин. [Показать отчёт]
Научился: Научился с помощью функций WinAPI определять цвет пикселя в сапера. 
Сложности: Самым сложным для меня было найти цвет семерки и восьмерки - до сих пор не нашел. 
Комментарии: Нашел цвет следующих объектов: 1 - 255,0,0,255 2 - 255, 0, 128, 0 3 - 255, 0 ,0 , 255 4 - 255, 0,0,128 5 - 255, 128,0,0 6 - 255, 0,128,128 пустая - 255,192,192,192 flag - 255,255,0,0 
24 БОТ - Совместное фото 00:31:34 13 чел. ★ 5 Done
  Считывание пикселя с экрана работает крайне медленно.
Вместо этого было решено сделать скриншот всей программы.
Чтобы дальнейшую обработку производить напрямую,
а не через медленные вызовы WinAPI методов.

Цель урока - создание "Совместного фото",
на котором будут все возможные варианты клеток в игре.
Отчёт отправил: 7119. Новопашин Владимир Выполнено за 2 час. 25 мин. [Показать отчёт]
Научился: Научился получать скриншот с помощью C#. 
Сложности: Ничего. 
Комментарии: Этот способ гораздо быстрее и приятнее. Все гениальное просто - мог бы сам догадаться. 
25 БОТ - Гадание по фото 00:39:50 13 чел. ★ 5 Done
  На этом уроке мы проанализируем созданную фотографию,
на предмет определения координат пикселей,
по цвету которых можно будет однозначно
определить значение в клетке сапёра.

Отчёт отправил: 7119. Новопашин Владимир Выполнено за 6 час. 34 мин. [Показать отчёт]
Научился: Научился формировать структуру ActorInfo для всех необходимых объектов. 
Сложности: Интуитивно понимаю, что это не все. Еще много нужно сделать работы. 
Комментарии: Все еще впереди. 
26 БОТ - Сканер минного поля 00:23:55 13 чел. ★ 5 Done
  На этом уроке мы применим результаты анализа
в полевых условиях на запущенном минёре.
Сформируем карту по скриншоту минёра.
Отчёт отправил: 7119. Новопашин Владимир Выполнено за 24 час. 00 мин. [Показать отчёт]
Научился: Научился распознавать клетку по 2 точкам цифры, открытую , закрытую клетку и флаг. 
Сложности: У меня тоже не распознавались клетки. И главное - у меня оказалось бордюр берется на три пикселя слева, справа, снизу и сверху больше и я пытался как в видеоуроке использовать те же цифры. Это мне напомнила фильм "Визит к Минотавру", когда молодой Страдивари скопировал координаты скрипки Амати (мастер у которого он учился). Тот попросил его продиктовать координаты и он ошибся в одной. Вообщем решил еще раз сам все сделать и у меня все получилось. 
Комментарии: Получилось круто. Я очень рад. 
27 БОТ - Выход на финишную прямую 00:14:38 12 чел. ★ 5 Done
  На этом уроке мы проверим функциональность частей, которые нам нужно объединить.
Доработаем функцию doMouseClick() чтобы она умела открывать
клетки и ставить флажки по указанным координатам клеток.
Посмотрим, что необходимо переносить из предыдущего проекта.
Отчёт отправил: 7119. Новопашин Владимир Выполнено за 5 час. 52 мин. [Показать отчёт]
Научился: Кликать ботом правой клавишей мыши. 
Сложности: Ничего. 
Комментарии: Супер урок. 
28 БОТ - Неуправляемый Интеллект 00:16:00 12 чел. ★ 5 Done
  На этом уроке мы внесём все необходимые изменения и запустим алгоритм.
К сожалению, он зациклился, в результате чего пришлось выходить из системы.
Но первый результат обнадёживает - клики Анализатор делал верные.
Отчёт отправил: 7119. Новопашин Владимир Выполнено за 3 час. 36 мин. [Показать отчёт]
Научился: Научился интегрировать ранее сделанные разработки. 
Сложности: Самое сложное - заставить это работать. Я чтобы не попасть в ситуацию игромиста стал вызовать MessageBox - что позволило мне в любой момент остановить программу. 
Комментарии: Лишний раз убеждаюсь - не все так просто. 
29 БОТ - Всё открыто! 00:23:23 12 чел. ★ 5 Done
  На этом уроке мы завершим создание бота и
откроем все клетки минного поля с помощью нашего алгоритма.
Отчёт отправил: 7119. Новопашин Владимир Выполнено за 42 мин. [Показать отчёт]
Научился: Научился открывать клетки с помощью написанных ранее алгоритмов для внешней программы. Я до самого последнего момента не верил, что получится. 
Сложности: Бывает нарывается на мину, но это надо уже копать и моделировать эту ситуацию. 
Комментарии: Я знаю почему такой курс получился замечательным - Игромиста просто был в энергопотоке в таких случаях получается шедевры. Кстати насчет веббота не совсем понял, есть ссылка на сайт. 
30 ФИНАЛЬНЫЙ УРОК 12 чел. ★ 5 Done
  Поздравляю!
Ты одолел Боты Минёра.
Теперь ты заслуженный Минёр.

Запиши видеообзор своих программ.
Какой видеокурс ты будешь проходить следующим?
Отчёт отправил: 7119. Новопашин Владимир Выполнено за 7 час. 26 мин. [Показать отчёт]
Научился: Ничему 
Сложности: Звук не писался - записал это видео с 3 раза. 
Комментарии: Следующий курс будет шарики. 
Видеообзор: https://youtu.be/K-TSduOP0Wo
31 VIP - Хакерский подход 00:19:57 12 чел. ★ 5 Done
  На этом уроке мы напишем хакерскую программу для вскрытия Сапёрного поля.
Отчёт отправил: 7119. Новопашин Владимир Выполнено за 2 час. 19 мин. [Показать отчёт]
Научился: Научился хакерски просматривать сапера. 
Сложности: Правильно запустить процедуру ReadMemory. 
Комментарии: Получилось не спортивно, зато очень прикольно. 
32 VIP - Жизнь у Сапёра 01:22:45 4 чел. ★ 5 $
  Напишите Игру жизнь.
Отобразите её на поле игры "Сапёр".
Для переключения клеток используйте клики ПКМ по клеткам.
  Итого:   32 видеоурока общей продолжительностью 10 час. 56 мин. 4 чел. ★ 4.98  
  Финалисты:   Иван Воронин,   Кирилл Шмойлов,   Tekashnik,   Yefim .

Начинаем практику по языку C#




Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.
Научился: видео записывать
что научился на этом курсе играть в сапера узнал как просто мины и числа возле мин считаются сделал сапера разобрался в алгоритмах обсчета как в сапере играть если простым способом неизвестно куда нажимать захват определенного окна узнавать про координаты окна и где она расположено делать скриншот окна обрабатывать скриншот определять числа и знаки по двум пикселям заставлять кликать мышь на по определенным координатам и еще много всего, кто дойдет до этого урока поимет :) Хорошее настроение и классные программки которые можно не только применить к саперу
Отличный курс, много нового, чтобы получать данные с экрана, анализировать и реагировать на изменения, происходящие на экране. Всё самое интересное внутри программы, оформление внешнее по минимуму, поэтому считаю что видеообзор записывать не целесообразно, чтобы не делать медвежью услугу остальным, кто не прошел и не получил удовольствие от увиденного! Программа со 100% шансов отмечает в Сапере мины.