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

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

Боты Сапёра

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



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

Хочу купить!

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

Цена: 2000 p.


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

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

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

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

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

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

Впереди внедрение ИИ Бота для сторонней игры.
Отчёт отправил: 5649. Максим Лапшинов Выполнено за 10 мин. [Показать отчёт]
Научился: нечего 
Сложности: сложного нечего неосталось 
Комментарии: очень понравился урок также как и судоку жду других курсов типо сапера и судоку спасибо за замечательный курс 
Видеообзор: https://www.youtube.com/watch?v=h7cqIjq72qw
22 БОТ - Отмычка сапёра 00:31:45 15 чел. ★ 4.9 Done
  На этом уроке мы начнём создавать настоящего бота,
который будет проходить сапёра из Windows XP.
Мы найдём указатель на программу,
вычислим координаты окна игры,
запрограммируем несколько
щелчков мышкой по ней.

Для работы нам потребуется именно XP версия сапёра, её можно скачать здесь:
www.videosharp.info/data/docs/winmine.exe.
Отчёт отправил: 5649. Максим Лапшинов Выполнено за 40 мин. [Показать отчёт]
Научился: находить окно , его размеры брать, клик по окну делать  
Сложности: рассчитать координаты  
Комментарии: понравилось что выстовили влаги интересный урок вышел 
23 БОТ - Пиксельный металлоискатель 00:25:10 14 чел. ★ 5 Done
  На этом уроке мы начнём создавать пиксельный металлоискатель.
По цвету пикселей на экране мы будем восстанавливать значение открытой карты.
Ваша задача - довести его создание до логического завершения.
Отчёт отправил: 5649. Максим Лапшинов Выполнено за 40 мин. [Показать отчёт]
Научился: находить цвет пикселя, рисовать узоры в сапере 
Сложности: найти пиксель 
Комментарии: очень замечательно было найти все данные о ячейках  
24 БОТ - Совместное фото 00:31:34 13 чел. ★ 5 Done
  Считывание пикселя с экрана работает крайне медленно.
Вместо этого было решено сделать скриншот всей программы.
Чтобы дальнейшую обработку производить напрямую,
а не через медленные вызовы WinAPI методов.

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

Отчёт отправил: 5649. Максим Лапшинов Выполнено за 1 час. 20 мин. [Показать отчёт]
Научился: обрабатывать изображения, в изображение искать пиксели  
Сложности: чегото у меня с одной точкой все сразу вывелось 12 думаю может ошибка искал смотрел ненашол 
Комментарии: сделал и с двумя пикселями тоже странно смотрим что дальше будит  
26 БОТ - Сканер минного поля 00:23:55 13 чел. ★ 5 Done
  На этом уроке мы применим результаты анализа
в полевых условиях на запущенном минёре.
Сформируем карту по скриншоту минёра.
Отчёт отправил: 5649. Максим Лапшинов Выполнено за 4 час. 00 мин. [Показать отчёт]
Научился: пару раз пересматривал видео искал ошибку  
Сложности: понять где ошибка 
Комментарии: ошибка в изображение наверное была, может на пиксель был сдвинут цвет при копировании или сохранилась както странно взял изображение у Иван Воронин и все нормально прошло хорошо определились все цвета  
27 БОТ - Выход на финишную прямую 00:14:38 12 чел. ★ 5 Done
  На этом уроке мы проверим функциональность частей, которые нам нужно объединить.
Доработаем функцию doMouseClick() чтобы она умела открывать
клетки и ставить флажки по указанным координатам клеток.
Посмотрим, что необходимо переносить из предыдущего проекта.
Отчёт отправил: 5649. Максим Лапшинов Выполнено за 20 мин. [Показать отчёт]
Научился: проверка работоспособности клика мышки 
Сложности: нечего 
Комментарии: все работает  
28 БОТ - Неуправляемый Интеллект 00:16:00 12 чел. ★ 5 Done
  На этом уроке мы внесём все необходимые изменения и запустим алгоритм.
К сожалению, он зациклился, в результате чего пришлось выходить из системы.
Но первый результат обнадёживает - клики Анализатор делал верные.
Отчёт отправил: 5649. Максим Лапшинов Выполнено за 30 мин. [Показать отчёт]
Научился: перенести бота  
Сложности: зациклился бот пришлось рестарт делать до вашего зацикливания 
Комментарии: все хорошо повеселился  
29 БОТ - Всё открыто! 00:23:23 12 чел. ★ 5 Done
  На этом уроке мы завершим создание бота и
откроем все клетки минного поля с помощью нашего алгоритма.
Отчёт отправил: 5649. Максим Лапшинов Выполнено за 40 мин. [Показать отчёт]
Научился: останавливать бота  
Сложности: нечего 
Комментарии: замечательный курс получился, увлекся я с этим ботом и много чего узнал  
30 ФИНАЛЬНЫЙ УРОК 12 чел. ★ 5 Done
  Поздравляю!
Ты одолел Боты Минёра.
Теперь ты заслуженный Минёр.

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

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




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

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

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

Ты в любой момент сможешь отписаться от рассылки.
Научился: видео записывать
что научился на этом курсе играть в сапера узнал как просто мины и числа возле мин считаются сделал сапера разобрался в алгоритмах обсчета как в сапере играть если простым способом неизвестно куда нажимать захват определенного окна узнавать про координаты окна и где она расположено делать скриншот окна обрабатывать скриншот определять числа и знаки по двум пикселям заставлять кликать мышь на по определенным координатам и еще много всего, кто дойдет до этого урока поимет :) Хорошее настроение и классные программки которые можно не только применить к саперу
Добавил интерактивную легенду найденных уникальных объектов игрового поля при парсинге эталонного скриншота. остальные нововведения, которые добавлялись в процессе разработок на каждом уроке см. видео =) з.ы. плюс недокументированные изменения и оптимизации.