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

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

Боты Сапёра

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



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

Хочу купить!

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

Цена: 2000 p.


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

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

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

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

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

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

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

Для работы нам потребуется именно XP версия сапёра, её можно скачать здесь:
www.videosharp.info/data/docs/winmine.exe.
Отчёт отправил: 7238. Константин Выполнено за 1 час. 20 мин. [Показать отчёт]
Научился: Научился определять окно игры сапёр и отправлять клики мыши в окно игры. 
Сложности: Все норм. 
Комментарии: Очень занимательное занятие проставления флажков и вопросов затягивает. 
Видеообзор: https://www.youtube.com/watch?v=CT8LwT1XXs0&feature=youtu.be
23 БОТ - Пиксельный металлоискатель 00:25:10 14 чел. ★ 5 Done
  На этом уроке мы начнём создавать пиксельный металлоискатель.
По цвету пикселей на экране мы будем восстанавливать значение открытой карты.
Ваша задача - довести его создание до логического завершения.
Отчёт отправил: 7238. Константин Выполнено за 1 час. 20 мин. [Показать отчёт]
Научился: Научился определять цвета координат пикселей. 
Сложности: Попасть в нужный пиксель и определить цвет. Решил снайперским способом подробнее смотреть видео. 
Комментарии: А что за игра жизнь так и не понял. 
Видеообзор: https://youtu.be/pKWURWF2p98
24 БОТ - Совместное фото 00:31:34 13 чел. ★ 5 Done
  Считывание пикселя с экрана работает крайне медленно.
Вместо этого было решено сделать скриншот всей программы.
Чтобы дальнейшую обработку производить напрямую,
а не через медленные вызовы WinAPI методов.

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

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

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

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




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

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

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

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