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

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

Боты Сапёра

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



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

Хочу купить!

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

Цена: 2000 p.


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

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

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

Отчёт отправил: 4004. Елена Выполнено за 10 мин. [Показать отчёт]
Научился: Инициализировать минное поле 
Сложности: Пройти 20-минутный урок за 10 минут :)  
Комментарии: На самом деле весь этот код был у меня написан еще с вебинара. Оставалось только повторить. Просто сегодня вообще нет времени на "вдумывание" в то, о чем говорится на уроке, поэтому выбрала то, что попроще и что уже делала раньше. 
4 ИГРА - Матрица картинок 00:25:08 22 чел. ★ 5 Done
  На этом уроке мы сделаем вывод картинок на экран.
Для этого мы напишем функцию PlaceBox(),
которая будет создавать катинки и размещать их на панель.
Потом мы создадим матрицу картинок.
В конце урока мы сделаем автоматическое
изменение картинок при ресайзинге формы.
Отчёт отправил: 4004. Елена Выполнено за 20 мин. [Показать отчёт]
Научился: повторение пройденного 
Сложности: НАЙТИ ВРЕМЯ!!! 
Комментарии: Разместила поле горизонтально по центру формы. 
5 ИГРА - Карта минного поля 00:19:35 21 чел. ★ 5 Done
  На этом уроке мы отобразим минное поле.
Для это нам потребуется функция
private Bitmap ShowPicture (int number) и
private void ShowBox (int x, int y, int number)
а также делегаты для их вызова из класса Mines.
Отчёт отправил: 4004. Елена Выполнено за 20 мин. [Показать отчёт]
Научился: Повторила работу с делегатами 
Сложности: Со временем становится всё хуже. 
Комментарии: Я делегаты всё равно до конца не понимаю :( Надо про них статью написать - деваться будет некуда и разберусь :) Но по уроку всё получилось. 
6 ИГРА - Зелёный флаг 00:17:40 21 чел. ★ 5 Done
  На этом уроке мы сделаем обработку клика
правой кнопкой мышки для установки флага.
Для этого нам потребуется сохранять и считывать
координаты клетки в поле Tag каждого PictureBox.
Отчёт отправил: 4004. Елена Выполнено за 20 мин. [Показать отчёт]
Научился: Вспомнила работу с полем Tag 
Сложности: немного запуталась со своими top-ом и map-ом 
Комментарии: Все получилось 
7 ИГРА - Алгоритмический подход 00:13:27 21 чел. ★ 5 Done
  На этом уроке мы напишем основную часть
алгоритма обработки левой кнопки мышки.
Мы разделим эту задачу на несколько
вспомогательных функций, которые
вы можете реализовать самтостоятельно.
Отчёт отправил: 4004. Елена Выполнено за 20 мин. [Показать отчёт]
Научился: повторение 
Сложности: Зная, что сегодня не будет времени на выполнение урока, урок был сделан вчера, а отчет отправлен сегодня. 
Комментарии: все получилось 
8 ИГРА - Бомбовые алгоритмы 00:29:29 20 чел. ★ 5 Done
  На этом уроке мы допишем остальные функции и поиграем в созданную игру.
Вам останется довести программу до ума,
сделать сообщение об окончании игры и
все остальные элементы игры,
по желанию и по фантазии.
Отчёт отправил: 4004. Елена Выполнено за 40 мин. [Показать отчёт]
Научился: Работать с делегатами (хоть это и странно) 
Сложности: Восстановить все, что пропало почему-то с предыдущего урока. 
Комментарии: Реализовала вывод сообщения об окончании игры с помощью делегата (чтоб заодно потренироваться). 
9 ТРЕТЬФИНАЛЬНЫЙ УРОК 20 чел. ★ 5 Done
  Поздравляю с завершением курса по созданию игры Сапёр.
Однако создание игры на этом ещё не закончено.
Твоя задача - придумать, что ещё можно/нужно
добавить в игру и реализовать это.
Запиши видеообзор своей игры и расскажи,
что ты добавил в неё самостоятельно.
Отчёт отправил: 4004. Елена Выполнено за 2 час. 00 мин. [Показать отчёт]
Научился: Записывать видеообзоры 
Сложности: Разрешить противоречие внутри себя. Сегодня - понедельник, начало новой недели в Клубе формулистов, и мне предстоит выполнить непростой видеоурок с видеообзором. В последние две недели времени для выполнения видеоуроков катастрофически не хватает. Противоречие заключалось в том - сделать видеообзор и отчитаться по уроку или оставить пальму первенства "Клуба формулистов", мотивируя это нехваткой времени, и взять перерыв на неделю-другую...  
Комментарии: Всё уже сказано выше. Обработку видео почему-то приходится ждать очень долго. 
Видеообзор: https://youtu.be/o6FZ45Km4kc
10 ИИ - Как пройти игру 00:03:38 19 чел. ★ 4.9 Done
  Мы начинаем создание Искусственного Интеллекта для игры Сапёр,
для чего нам потребуется несколько этапов.
1. Описание и понимание идеи алгоритма.
2. Ручная проработка алгоритма на практике.
3. Создание класса для логики ИИ.
4. Внедрение его в наш проект для тестирования.
5. Создание бота для чужой игры Сапёр.
Отчёт отправил: 4004. Елена Выполнено за 7 мин. [Показать отчёт]
Научился: анализировать очевидные и неочевидные ходы 
Сложности: вовремя остановиться. Очевидные ходы кончились вместе с минами. 
Комментарии: С карты можно считать данные из массива map[] при условии, что соответствующая клетка массива top[] открыта. Или не это имелось в виду? 
11 ИИ - Очевидные шаги 00:09:00 19 чел. ★ 5 Done
  На этом уроке мы отработаем базовый,
самый очевидный алгоритм разминирования,
который основан на открытии очевидных клеток.
Отчёт отправил: 4004. Елена Выполнено за 20 мин. [Показать отчёт]
Научился: Играть в Сапера по новым правилам. 
Сложности: Основная сложность заключается в том, что не успею я этот курс за неделю закончить. 
Комментарии: Сначала играла по очевидным правилам, но по не очень очевидным удалось однозначно открыть всё поле. 
12 ИИ - Пересечение множеств 00:34:53 17 чел. ★ 5 Done
  На этом уроке у нас будет матчасть, логика ИИ.
Мы решим задачу с пересекающимися множествами
через систему неравенств. Узнаем, в каком
случае может быть единственный ответ,
и как его просчитать простой формулой,
чтобы разделить два пересекающихся
множества на три непересекающихся.
Отчёт отправил: 4004. Елена Выполнено за 34 мин. [Показать отчёт]
Научился: Разделять множества на непересекающиеся подмножества 
Сложности: Дождаться конца урока. 
Комментарии: Алгоритм понятен. Хотелось бы перейти к его реализации. Первый скрин - тупиковая ситуация, второй - завершение партии (не совсем удачное). 
13 ИИ - Класс группы 00:17:28 17 чел. ★ 4.9 Done
  На этом уроке мы начнём создание проекта
логики бота сапёра. Мы создадим структуру
с координатами клеток и опишем поля и
методы класса Group, в котором будут
храниться логические группы минного поля.
Отчёт отправил: 4004. Елена Выполнено за 20 мин. [Показать отчёт]
Научился: Узнала о возможности работы с множествами 
Сложности: ничего 
Комментарии: Нам потребуются методы создания (заполнения) множества, вычитания множеств, пересечения множеств.  
14 ИИ - Элементарные алгоритмы 00:10:03 16 чел. ★ 5 Done
  На этом уроке мы реализуем два элементарных
алгоритма определения пустых клеток и клеток
с минами, а также проверим, как это работает.
Отчёт отправил: 4004. Елена Выполнено за 15 мин. [Показать отчёт]
Научился: Создала мeтоды GetFlags() и GetEmpty(). 
Сложности: ничего 
Комментарии: Пока - непонятно, но здорово! Думаю, скоро алгоритм внедрится, и всё встанет на свои места. 
15 ИИ - Жучкин алгоритм 00:39:05 16 чел. ★ 4.9 Done
  На этом уроке мы внедрим наш элементарный
алгоритм в рабочую программу и создадим
кнопочку, по нажатию которой будут
отмечаться все явные мины и пустые клетки.
Минут 15 в уроке ушло на поиск ошибки.
Отчёт отправил: 4004. Елена Выполнено за 40 мин. [Показать отчёт]
Научился: Смотреть видео с удвоенной скоростью 
Сложности: Не запутаться 
Комментарии: Урок немного затянутым показался, особенно вторая половина. Тяжело искать не только свои ошибки :) 
16 ИИ - Вспомнить всё 00:23:17 16 чел. ★ 5 Done
  На этом уроке мы вспомним и повторим, что было на прошлых уроках.
Для чего нужен класс Group и как он используется для поиска мин на карте.
В этом уроке мы почти ничего писать не будем, просто освежим всё в памяти.
Отчёт отправил: 4004. Елена Выполнено за 30 мин. [Показать отчёт]
Научился: Повторение пройденного 
Сложности: не знаю 
Комментарии: Интересно, как будет реализовываться алгоритм пересечения множеств. 
17 ИИ - Операции со множествами 00:15:19 16 чел. ★ 5 Done
  На этом уроке мы напишем основные методы для работы со множествами:
сравнение, пересечение и вычитание множеств.
Отчёт отправил: 4004. Елена Выполнено за 20 мин. [Показать отчёт]
Научился: Пересекать и вычитать множества 
Сложности: Не поняла. зачем при пересечении множеств дважды использовать цикл foreach и дважды добавлять элементы во множество пересечения. 
Комментарии: Работу функций протестировала (правда, Intersect() сделала по-своему) 
18 ИИ - Множественное тестирование 00:06:46 16 чел. ★ 4.9 Done
  На этом уроке мы проведём тестирование
созданных методов операций над множествами.
Отчёт отправил: 4004. Елена Выполнено за 10 мин. [Показать отчёт]
Научился: Тестировать алгоритмы 
Сложности: ничего 
Комментарии: всё было сделано в качестве дополнительного задания прошлого урока. 
19 ИИ - Ботовый алгоритм InterMines 00:17:38 16 чел. ★ 4.9 Done
  На этом уроке мы наконец-таки напишем код алгоритма,
о котором мы так много говорили в предыдущих уроках.
Отчёт отправил: 4004. Елена Выполнено за 25 мин. [Показать отчёт]
Научился: Выбирать мины на пересечении множеств 
Сложности: ничего 
Комментарии: осталось внедрить алгоритм в Бота. 
20 ИИ - Открыть всё! 00:21:34 16 чел. ★ 5 Done
  На этом уроке мы перепишем по новому
алгоритм открытия всех клеток с
использованием класса Group.
Ура! Открываемость минного поля значительно возросла!
Это успех :)
Отчёт отправил: 4004. Елена Выполнено за 1 час. 30 мин. [Показать отчёт]
Научился: Реализовывать Бота 
Сложности: Найти опечатку в коде, из-за которой всё взрывалось и зацикливалось. 
Комментарии: После того, как при копировании материалов сайта стал добавляться источник, переход по ссылке всё-таки стоит сделать через . Иначе получается, что копирую ссылку, вставляю в адресную строку и получаю: https://habrahabr.ru/post/211188/ Источник «Формула программиста» – https://www.videosharp.info/video/sweep/nr=1062 По теме урока замечаний нет. 
21 ВТОРОЙ ТРЕТЬФИНАЛЬНЫЙ УРОК 15 чел. ★ 5 Done
  Поздравляю с завершением создания Искуственного Интеллекта для решения Сапёра!

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

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

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

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

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

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

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




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

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

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

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