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

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

Боты Сапёра

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



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

Хочу купить!

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

Цена: 2000 p.


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

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

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

Отчёт отправил: 8275. Tekashnik Выполнено за 28 мин. [Показать отчёт]
Научился: Писать заполнение поля в Сапёре  
Сложности: Придумывать, что было самым сложным 
Комментарии: Всем добра) 
4 ИГРА - Матрица картинок 00:25:08 22 чел. ★ 5 Done
  На этом уроке мы сделаем вывод картинок на экран.
Для этого мы напишем функцию PlaceBox(),
которая будет создавать катинки и размещать их на панель.
Потом мы создадим матрицу картинок.
В конце урока мы сделаем автоматическое
изменение картинок при ресайзинге формы.
Отчёт отправил: 8275. Tekashnik Выполнено за 41 мин. [Показать отчёт]
Научился: Рисовать плашки на панели 
Сложности: Придумывать, что было самым сложным 
Комментарии: Всем добра) 
5 ИГРА - Карта минного поля 00:19:35 21 чел. ★ 5 Done
  На этом уроке мы отобразим минное поле.
Для это нам потребуется функция
private Bitmap ShowPicture (int number) и
private void ShowBox (int x, int y, int number)
а также делегаты для их вызова из класса Mines.
Отчёт отправил: 8275. Tekashnik Выполнено за 51 мин. [Показать отчёт]
Научился: Заполнять карту минного поля и отображать её) 
Сложности: Найти маленькую ошибку)) в CS ищу ошибки быстро, не то что в java 
Комментарии: в CS ищу ошибки быстро, не то что в java 
6 ИГРА - Зелёный флаг 00:17:40 21 чел. ★ 5 Done
  На этом уроке мы сделаем обработку клика
правой кнопкой мышки для установки флага.
Для этого нам потребуется сохранять и считывать
координаты клетки в поле Tag каждого PictureBox.
Отчёт отправил: 8275. Tekashnik Выполнено за 36 мин. [Показать отчёт]
Научился: Тестировать программу 
Сложности: Придумывать, что было самым сложным 
Комментарии: Поиграл несколько раз, играть можно, но осторожно))) Никакого контроля)) взорвался и дальше продолжай 
7 ИГРА - Алгоритмический подход 00:13:27 21 чел. ★ 5 Done
  На этом уроке мы напишем основную часть
алгоритма обработки левой кнопки мышки.
Мы разделим эту задачу на несколько
вспомогательных функций, которые
вы можете реализовать самтостоятельно.
Отчёт отправил: 8275. Tekashnik Выполнено за 1 час. 13 мин. [Показать отчёт]
Научился: Писать методы для игры сапёр 
Сложности: Искать ошибки, которых было немало) 
Комментарии: Почти реализовал все доп функции 
8 ИГРА - Бомбовые алгоритмы 00:29:29 20 чел. ★ 5 Done
  На этом уроке мы допишем остальные функции и поиграем в созданную игру.
Вам останется довести программу до ума,
сделать сообщение об окончании игры и
все остальные элементы игры,
по желанию и по фантазии.
Отчёт отправил: 8275. Tekashnik Выполнено за 1 час. 14 мин. [Показать отчёт]
Научился: Искать ошибки в коде 
Сложности: Найти ошибки 
Комментарии: Добавил, красную мину, на которой подорвался Добавил некорректо установленый флажок - перечеркнутая мина) 
9 ТРЕТЬФИНАЛЬНЫЙ УРОК 20 чел. ★ 5 Done
  Поздравляю с завершением курса по созданию игры Сапёр.
Однако создание игры на этом ещё не закончено.
Твоя задача - придумать, что ещё можно/нужно
добавить в игру и реализовать это.
Запиши видеообзор своей игры и расскажи,
что ты добавил в неё самостоятельно.
Отчёт отправил: 8275. Tekashnik Выполнено за 1 час. 41 мин. [Показать отчёт]
Научился: Записывать видео обзор 
Сложности: Записывать видеообзор 
Комментарии: Видеообзор записал без микрофона, звук был записан отдельно, как и второе видео, первый мой такой опыт и вот что получилось) А вообще курс мне понравился. Хотя всё что тут использовалось я уже знал, но если повторять многократно, то во первых хорошо запомниться, а во вторых уже на лету можно будет применять где бы то ни было, а именно это отличает профессионала от любителя. Как всегда спасибо Евгению Витольдовчу ;) 
Видеообзор: https://www.youtube.com/watch?v=NnQrXQdYVKw
10 ИИ - Как пройти игру 00:03:38 19 чел. ★ 4.9 Done
  Мы начинаем создание Искусственного Интеллекта для игры Сапёр,
для чего нам потребуется несколько этапов.
1. Описание и понимание идеи алгоритма.
2. Ручная проработка алгоритма на практике.
3. Создание класса для логики ИИ.
4. Внедрение его в наш проект для тестирования.
5. Создание бота для чужой игры Сапёр.
Отчёт отправил: 8275. Tekashnik Выполнено за 31 мин. [Показать отчёт]
Научился: Думать 
Сложности: Придумывать 
Комментарии: Ну наверное нужно, что то вроде файн ридера, который будет считывать поле, а затем уже кликать на 100% клетки, а если 100% клеток не осталось, то можно некую вероятность посчитать, и так далее) 
11 ИИ - Очевидные шаги 00:09:00 19 чел. ★ 5 Done
  На этом уроке мы отработаем базовый,
самый очевидный алгоритм разминирования,
который основан на открытии очевидных клеток.
Отчёт отправил: 8275. Tekashnik Выполнено за 21 мин. [Показать отчёт]
Научился: Отработал очевидные ходы 
Сложности: Придумывать что было самым сложным 
Комментарии: Всего пол поля открыл, а очевидные ходы закончились 
12 ИИ - Пересечение множеств 00:34:53 17 чел. ★ 5 Done
  На этом уроке у нас будет матчасть, логика ИИ.
Мы решим задачу с пересекающимися множествами
через систему неравенств. Узнаем, в каком
случае может быть единственный ответ,
и как его просчитать простой формулой,
чтобы разделить два пересекающихся
множества на три непересекающихся.
Отчёт отправил: 8275. Tekashnik Выполнено за 1 час. 01 мин. [Показать отчёт]
Научился: Проходить профессионала 
Сложности: Проходить профессионала) 
Комментарии: Что то подзамучился я его проходить, но в итоге достаточно быстро прошёл 
13 ИИ - Класс группы 00:17:28 18 чел. ★ 4.9 Done
  На этом уроке мы начнём создание проекта
логики бота сапёра. Мы создадим структуру
с координатами клеток и опишем поля и
методы класса Group, в котором будут
храниться логические группы минного поля.
Отчёт отправил: 8275. Tekashnik Выполнено за 36 мин. [Показать отчёт]
Научился: Создавать классы 
Сложности: Придумать, что было самым сложным 
Комментарии: Будем посмотреть, как это работать с SortedSet 
14 ИИ - Элементарные алгоритмы 00:10:03 16 чел. ★ 5 Done
  На этом уроке мы реализуем два элементарных
алгоритма определения пустых клеток и клеток
с минами, а также проверим, как это работает.
Отчёт отправил: 8275. Tekashnik Выполнено за 19 мин. [Показать отчёт]
Научился: Создавать множества SortedSet 
Сложности: Придумывать, что было самым сложным 
Комментарии: Намечается что то грандиозное и интересное 
15 ИИ - Жучкин алгоритм 00:39:05 16 чел. ★ 4.9 Done
  На этом уроке мы внедрим наш элементарный
алгоритм в рабочую программу и создадим
кнопочку, по нажатию которой будут
отмечаться все явные мины и пустые клетки.
Минут 15 в уроке ушло на поиск ошибки.
Отчёт отправил: 8275. Tekashnik Выполнено за 1 час. 15 мин. [Показать отчёт]
Научился: Писать алгоритм открытия очевидных ячеек)) 
Сложности: Это было супер 
Комментарии: Много раз пользовался кнопкаой, завораживает, пошагово тоже интересно наблюдать, как он шагами делает) 
16 ИИ - Вспомнить всё 00:23:17 16 чел. ★ 5 Done
  На этом уроке мы вспомним и повторим, что было на прошлых уроках.
Для чего нужен класс Group и как он используется для поиска мин на карте.
В этом уроке мы почти ничего писать не будем, просто освежим всё в памяти.
Отчёт отправил: 8275. Tekashnik Выполнено за 32 мин. [Показать отчёт]
Научился: Наслаждаться кнопкой Hint 
Сложности: Найти небольшую ошибку 
Комментарии: Вспомнили всё! 
17 ИИ - Операции со множествами 00:15:19 16 чел. ★ 5 Done
  На этом уроке мы напишем основные методы для работы со множествами:
сравнение, пересечение и вычитание множеств.
Отчёт отправил: 8275. Tekashnik Выполнено за 1 час. 12 мин. [Показать отчёт]
Научился: написал TestGroup 
Сложности: ПРидумать, что было самым сложным 
Комментарии: Проверил работу функций Intersect() и Minus() 
18 ИИ - Множественное тестирование 00:06:46 16 чел. ★ 4.9 Done
  На этом уроке мы проведём тестирование
созданных методов операций над множествами.
Отчёт отправил: 8275. Tekashnik Выполнено за 1 час. 01 мин. [Показать отчёт]
Научился: Повторил создание тестов 
Сложности: Найти время) 
Комментарии: Уже давно за полночь)) 
19 ИИ - Ботовый алгоритм InterMines 00:17:38 16 чел. ★ 4.9 Done
  На этом уроке мы наконец-таки напишем код алгоритма,
о котором мы так много говорили в предыдущих уроках.
Отчёт отправил: 8275. Tekashnik Выполнено за 45 мин. [Показать отчёт]
Научился: Тестировать функцию InterMines() 
Сложности: Не запутаться, что откуда и куда) 
Комментарии: Как хорошо, что всё работает)) 
20 ИИ - Открыть всё! 00:21:34 16 чел. ★ 5 Done
  На этом уроке мы перепишем по новому
алгоритм открытия всех клеток с
использованием класса Group.
Ура! Открываемость минного поля значительно возросла!
Это успех :)
Отчёт отправил: 8275. Tekashnik Выполнено за 1 час. 12 мин. [Показать отчёт]
Научился: Изучить и понять алгоритм работы бота 
Сложности: Найти пару недочётов в программе, после моих нововведений 
Комментарии: Мне очень понравилось, особенного, когда сделал, что он каждый шаг по нажатию делает, сидишь и любуешься, тыкая в кнопку ХИНТ, как неспешно открывается поле, потом он доходит до места где уже не знает как открыт, тыкаешь случайно и дальше продолжаешь смотреть на работу бота... очень завараживающее зрелище)) Спасибо за курс, очень позновательно и полезно. 
21 ВТОРОЙ ТРЕТЬФИНАЛЬНЫЙ УРОК 15 чел. ★ 5 Done
  Поздравляю с завершением создания Искуственного Интеллекта для решения Сапёра!

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

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

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

Для работы нам потребуется именно XP версия сапёра, её можно скачать здесь:
www.videosharp.info/data/docs/winmine.exe.
Отчёт отправил: 8275. Tekashnik Выполнено за 1 час. 34 мин. [Показать отчёт]
Научился: использовать библиотеку user32.dll 
Сложности: Что то я не совсем всё понял 
Комментарии: Не понимаю как функция GetWindowRect() Вычисляет углы и ширину и высоту, смещаешь приложение в тострону уже значения другие, хотя по факту ширина и высота должны вроде как остоваться постоянныеми, на скриншотах я приложил данные с wRect два разных, они вообще логике не поддаются, может кто то объяснит?? По факту в пейнте посчила Ширина ~503, Высота ~ 364 - Это для профессионала..... может я что то не то делаю? 
23 БОТ - Пиксельный металлоискатель 00:25:10 14 чел. ★ 5 Done
  На этом уроке мы начнём создавать пиксельный металлоискатель.
По цвету пикселей на экране мы будем восстанавливать значение открытой карты.
Ваша задача - довести его создание до логического завершения.
Отчёт отправил: 8275. Tekashnik Выполнено за 59 мин. [Показать отчёт]
Научился: Считывать цвета пикселей с экрана монитора 
Сложности: Найт небольшую ошибку 
Комментарии: Как то не быстро он считывает цвета, если это делать часто, то программа будет откровенно тупить 
24 БОТ - Совместное фото 00:31:34 13 чел. ★ 5 Done
  Считывание пикселя с экрана работает крайне медленно.
Вместо этого было решено сделать скриншот всей программы.
Чтобы дальнейшую обработку производить напрямую,
а не через медленные вызовы WinAPI методов.

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

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

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

Отчёт отправил: 8275. Tekashnik Выполнено за 2 час. 13 мин. [Показать отчёт]
Научился: Создавать игру жизнь 
Сложности: Найти время 
Комментарии: Динамическое программирование отличная штука, которая помогает решать некоторые задачи очень элегантно. Всем рекомендую  
  Итого:   32 видеоурока общей продолжительностью 10 час. 56 мин. 4 чел. ★ 4.98  
  Финалисты:   Иван Воронин,   Кирилл Шмойлов,   Tekashnik,   Yefim .

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




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

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

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

Ты в любой момент сможешь отписаться от рассылки.


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


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