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

Формула программиста

основатель — Волосатов Евгений Витольдович

Клуб формулистов - Ежемесячная подписка

Вступление в Клуб Формулистов на выгодных условиях для НОВЫХ участников.

После взноса 512 руб. вы получите подписку
в Клуб Формулистов на 30 дней и 512 байт для быстрого старта.
Байты используются для открытия более одного урока в день, по 50 байт за урок.

Стоимость 1 дня за первый месяц: всего 16 рублей.

Через 30 дней будет списано 3,000 руб.
за продление подписки в Клуб на 30 дней +512 байт.

Так будет продолжаться каждые 30 дней, пока вы не отмените подписку.
Средства будет автоматически считываться с вашей карты.
Вы в любой момент сможете отказаться от продления Клуба.

Стоимость 1 дня: 100 руб.

Хочу вступить!

Также есть другие варианты оплаты участия в КФ:

Билет в клуб формулистов на ...
30+ дней | 60 дней | 150 дней | 380 дней | 1000 дней

Внимание!
Стоимость участия в Клубе формулистов увеличивается 1 числа каждого месяца на 100 рублей.
При оформления подписки стоимость остаётся постоянной, пока подписка не будет отменена.







Первый взнос - 512 руб./30 дней + 512 байт.
Последующие взносы - 3,000 руб./месяц + 512 байт.



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

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

Отчёт отправил: 1901. Neverwinter 2 Выполнено за 45 мин. [Показать отчёт]
Научился: Всё умел. 
Сложности: Нарисовать блок схему. 
Комментарии: Блок схема возможно не идеальна, ну да ладно, в принципе для понимания пойдет. 
2 ИГРА - Минная картотека 00:11:57
1 тест
29 чел. ★ 4.9 Done
  На этом уроке мы проанализируем блок-схему проекта
подготовим форму для проекта, загрузим все картинки.
Отчёт отправил: 1901. Neverwinter 2 Выполнено за 30 мин. [Показать отчёт]
Научился: Делать окно полупрозрачным)))) 
Сложности: Ничего. Схему я уже делал на прошлом уроке. 
Комментарии: ВЫРАЖАЮ ОГРОМНУЮ БЛАГОДАРНОСТЬ ЕЛЕНЕ ЗА ПОДГОТОВЛЕННЫЕ КАРТИНКИ!!!! 
3 ИГРА - Классные мины 00:20:47
27 чел. ★ 5 Done
  На этом уроке мы создадим класс Mines,
в котором опишем все необходимые константы
и напишем функции Init(), PlaceMines(), PlaceCounter().

Отчёт отправил: 1901. Neverwinter 2 Выполнено за 30 мин. [Показать отчёт]
Научился: Познакомился с "тройными комментариями" 
Сложности: Всё понятно. Класс то не вызывается из формы, так что матрицу пока не показать))) Ну, в следующем уроке уже наверное... 
Комментарии: Евгений Витольдович, у вас такой... забавный эксэль... Видны только клетки вокруг мышки)) Вроде урок такой длинный а так мало сделали... даже не знаю)) 
4 ИГРА - Матрица картинок 00:25:08
27 чел. ★ 5 Done
  На этом уроке мы сделаем вывод картинок на экран.
Для этого мы напишем функцию PlaceBox(),
которая будет создавать катинки и размещать их на панель.
Потом мы создадим матрицу картинок.
В конце урока мы сделаем автоматическое
изменение картинок при ресайзинге формы.
Отчёт отправил: 1901. Neverwinter 2 Выполнено за 45 мин. [Показать отчёт]
Научился: Повторил динамическое размещение объектов 
Сложности: Ничего, как ни странно. 
Комментарии: 1. Динамическое размещение, вау! 2. РЕСАЙЗИНГ!!! ДААА!!!! ОБОЖАЮ!!! 3. Ресайз энд есть на форме (на панели его нет). На скрине показал вариант использования для перерисовки в конце. 
5 ИГРА - Карта минного поля 00:19:35
26 чел. ★ 5 Done
  На этом уроке мы отобразим минное поле.
Для это нам потребуется функция
private Bitmap ShowPicture (int number) и
private void ShowBox (int x, int y, int number)
а также делегаты для их вызова из класса Mines.
Отчёт отправил: 1901. Neverwinter 2 Выполнено за 30 мин. [Показать отчёт]
Научился: Всё знал. 
Сложности: Делегат. 
Комментарии: Ура, работает!! 
6 ИГРА - Зелёный флаг 00:17:40
26 чел. ★ 5 Done
  На этом уроке мы сделаем обработку клика
правой кнопкой мышки для установки флага.
Для этого нам потребуется сохранять и считывать
координаты клетки в поле Tag каждого PictureBox.
Отчёт отправил: 1901. Neverwinter 2 Выполнено за 30 мин. [Показать отчёт]
Научился: Вспомнил про обработку множества объектов через поле Tag. 
Сложности: Впринципе, ничего сложного. Полем  Tag надо учиться пользоваться)) 
Комментарии: Я позволил себе не согласиться с тем что было сделано на вебинаре и закомментировал это, взамен предложил свой вариант алгоритма обработки правой клавиши, позволяющий проставлять вопросики. 
7 ИГРА - Алгоритмический подход 00:13:27
26 чел. ★ 5 Done
  На этом уроке мы напишем основную часть
алгоритма обработки левой кнопки мышки.
Мы разделим эту задачу на несколько
вспомогательных функций, которые
вы можете реализовать самтостоятельно.
Отчёт отправил: 1901. Neverwinter 2 Выполнено за 15 мин. [Показать отчёт]
Научился: Всё умел. 
Сложности: Ничего. 
Комментарии: Полезность блок-схемы невозможно переоценить. И... Ура! Подходим к самому интересному! Скоро начнется игра! ... Ну для меня наверно завтра начнется... Устал уже)) 
8 ИГРА - Бомбовые алгоритмы 00:29:29
25 чел. ★ 5 Done
  На этом уроке мы допишем остальные функции и поиграем в созданную игру.
Вам останется довести программу до ума,
сделать сообщение об окончании игры и
все остальные элементы игры,
по желанию и по фантазии.
Отчёт отправил: 1901. Neverwinter 2 Выполнено за 1 час. 30 мин. [Показать отчёт]
Научился: Познакомился с замечательным способом применения рекурсии! Научился обрабатывать левую кнопку мыши для игры сапер (при всех возможных вариантах нажатия: в пустой зоне, в полупустой, на цифре). 
Сложности: Самым сложным было много чего. Рекурсия конечно класс. 
Комментарии: Самое простое замечание которое теперь можно выдать: а как менять размер поля? Если есть только exe-шник. Добавить трэк бары на форму? Ок, как передать их значения в локальный класс? Я пробовал обсуждать подобные вопросы с более опытными чем я программистами, и мне говорили: а зачем тебе это? все что связано с формой должно обрабатываться в классе формы. Ну да. А у нас сразу константами в локальном классе забито... Теперь я не знаю, как на них повлиять. Не придумал еще пока. Иван Воронин - ну полюбому же у тебя есть идея на этот счет!? Не стесьняся - напиши вариант... да прямо кодом))) Вобщем, вопрос в студию: как сейчас менять размер поля? (на скрншотах я поменял константы и заного скомпилировал - это не в счет) PS Получилось круто, играть прям приятно. Надо только доработать будет каким-то образом. PPS Еще раз выражаю огромную благодарность Елене за подготовленные картинки. 
9 ТРЕТЬФИНАЛЬНЫЙ УРОК без видео
23 чел. ★ 5 Done
  Поздравляю с завершением курса по созданию игры Сапёр.
Однако создание игры на этом ещё не закончено.
Твоя задача - придумать, что ещё можно/нужно
добавить в игру и реализовать это.
Запиши видеообзор своей игры и расскажи,
что ты добавил в неё самостоятельно.
Отчёт отправил: 1901. Neverwinter 2 Выполнено за 5 час. 00 мин. [Показать отчёт]
Научился: Проникать в локальный класс))) 
Сложности: Самым сложным было сделать, чтобы данные с формы учитывались в локальном классе. 
Комментарии: Спасибо всем, кто поддерживает меня в моих начинаниях. Евгений Витольдович: я обязательно посмотрю редактор сапера, спасибо за наводку. Новопашин Владимир: у нас количество столбцов и строк обрабатываются в локальном классе mines, если я на форму добавлю трекбари и пр... их значения будет низя передать в переменные локального класса (он просто их не будет видеть). Вобщем и в целом: я нашел как обмануть систему, теперь можно выбирать размеры поля)) Прописал условие победы, теперь оно показывается. Счетчик мин решил не добавлять, вместо него прогресс_бар. Мне кажется так круче. Ну и вообще, как и хотел Владимир - добавил менюшку со сложностями (ну и вообще, сделал кнопку "новая игра"). Конечно, это крохотная часть фич, которые можно добавить, поверьте, но надо дальше делать уроки. Ссылка будет доступна 14 дней (сегодня 07.03.2017) 
Видеообзор: d-PBbDg4LJI
10 ИИ - Как пройти игру 00:03:38
22 чел. ★ 4.9 Done
  Мы начинаем создание Искусственного Интеллекта для игры Сапёр,
для чего нам потребуется несколько этапов.
1. Описание и понимание идеи алгоритма.
2. Ручная проработка алгоритма на практике.
3. Создание класса для логики ИИ.
4. Внедрение его в наш проект для тестирования.
5. Создание бота для чужой игры Сапёр.
Отчёт отправил: 1901. Neverwinter 2 Выполнено за 10 мин. [Показать отчёт]
Научился: Всё умел. 
Сложности: Ответить на вопросы. 
Комментарии: Алгоритм ии словами? Эм..... ума не приложу. (Есть конечно методы разгадывания, может как-то использовать их для создания ИИ... например здесь https://www.slideshare.net/danielma33/mine-sweeper-mastered ) Считывать цифры - честно не знаю как... Есть конечно методы анализа картинки, и защита от них (каптча), но я от них далёк. Проще всего, полагаю, считывать цвет цифры. 
Видеообзор: MJ8Fu0IxorA
11 ИИ - Очевидные шаги 00:09:00
22 чел. ★ 4.9 Done
  На этом уроке мы отработаем базовый,
самый очевидный алгоритм разминирования,
который основан на открытии очевидных клеток.
Отчёт отправил: 1901. Neverwinter 2 Выполнено за 10 мин. [Показать отчёт]
Научился: Высчитывать вероятность нахождения мины вокруг клетки с цифрой в саперё. 
Сложности: Не применять логику) 
Комментарии: На первом скриншоте первый удачный ход (от компьютера). На втором - во что я уперся... Применяя только 2 правила дальше нельзя, наугад придется... А логикой можно. 
12 ИИ - Пересечение множеств 00:34:53
19 чел. ★ 4.9 Done
  На этом уроке у нас будет матчасть, логика ИИ.
Мы решим задачу с пересекающимися множествами
через систему неравенств. Узнаем, в каком
случае может быть единственный ответ,
и как его просчитать простой формулой,
чтобы разделить два пересекающихся
множества на три непересекающихся.
Отчёт отправил: 1901. Neverwinter 2 Выполнено за 2 час. 00 мин. [Показать отчёт]
Научился: Применять продвинутый алгоритм нахождения мин путём поиска решения неравенств 
Сложности: Удовлетворить Ивана Воронина. 
Комментарии: .....  
13 ИИ - Класс группы 00:17:28
20 чел. ★ 4.9 Done
  На этом уроке мы начнём создание проекта
логики бота сапёра. Мы создадим структуру
с координатами клеток и опишем поля и
методы класса Group, в котором будут
храниться логические группы минного поля.
Отчёт отправил: 1901. Neverwinter 2 Выполнено за 30 мин. [Показать отчёт]
Научился: Ничему. 
Сложности: Ничерта чет не понял, всегда такие хорошие объяснения, я щас.. что это за set такой? Алгоритм то действий ясен, но как с этими списками, какие у них аргументы? Это надо отдельно смотреть. 
Комментарии: Написал, как смог. Ну если не правильно - на следующем уроки, надеюсь, разъяснят суть и всё приведу  в норму. Методы наверно подходящее выбрал, а на счет аргументов не уверен. Ну комментарии должны быть верными (опять же, надеюсь). 
14 ИИ - Элементарные алгоритмы 00:10:03
19 чел. ★ 4.9 Done
  На этом уроке мы реализуем два элементарных
алгоритма определения пустых клеток и клеток
с минами, а также проверим, как это работает.
Отчёт отправил: 1901. Neverwinter 2 Выполнено за 30 мин. [Показать отчёт]
Научился: Всё знал. 
Сложности: Пока ничего. 
Комментарии: Ура, функцию public void AddTab (Coord coord)  я реализовал правильно. То что мы можем добавить множество к нашему табс это здорово. Двигаемся дальше. 
15 ИИ - Жучкин алгоритм 00:39:05
19 чел. ★ 4.9 Done
  На этом уроке мы внедрим наш элементарный
алгоритм в рабочую программу и создадим
кнопочку, по нажатию которой будут
отмечаться все явные мины и пустые клетки.
Минут 15 в уроке ушло на поиск ошибки.
Отчёт отправил: 1901. Neverwinter 2 Выполнено за 1 час. 30 мин. [Показать отчёт]
Научился: Узнал что List лучше чем SortedSet 
Сложности: Понимание работы алгоритма бота. 
Комментарии: Спасибо Евгению Витольдовичу за то что не стал перезаписывать урок! Спасибо боту, искавшему мину и ... нашедшему её! Это были самые яркие эмоции за последнее время! Спасибо мне, сделавшему кнопку новая игра (ух я бы замаялся без перезапуска) Ну и спасибо менюшке = мне не пришлось искать место для кнопки хинт, добавил в меню. 
16 ИИ - Вспомнить всё 00:23:17
19 чел. ★ 5 Done
  На этом уроке мы вспомним и повторим, что было на прошлых уроках.
Для чего нужен класс Group и как он используется для поиска мин на карте.
В этом уроке мы почти ничего писать не будем, просто освежим всё в памяти.
Отчёт отправил: 1901. Neverwinter 2 Выполнено за 45 мин. [Показать отчёт]
Научился: Потренировал алгоритм нахождения мин путем решения неравенств. 
Сложности: Применить алгоритм 
Комментарии: Сложно подобрать ситуацию, чтобы прямо вот сразу работало.... Блин, не знаю, может чего то не получается... Всё понятно,  а на практике куча случаев, когда решения нет, давайте рассмотрим этот. Из скриншота видно что III группа включает в себя IV, значит можно тнять одну от другой и получится что третья группа будет состоять из одной третьей клетки и одной мины, значит там стопудово мина! Да! Ну а для продолжения надо работать с правой верхней тройкой, которую я не включил в рассуждения)) 
17 ИИ - Операции со множествами 00:15:19
4 теста
19 чел. ★ 4.9 Done
  На этом уроке мы напишем основные методы для работы со множествами:
сравнение, пересечение и вычитание множеств.
Отчёт отправил: 1901. Neverwinter 2 Выполнено за 30 мин. [Показать отчёт]
Научился: Сложно сказать.... 
Сложности: Написать тест... 
Комментарии: Ну я честно попробовал протестировать функцию intersect... Она нашла одно пересечение (Count = 1 красным). Это наверное правильно? .... Придумать свой вопрос? No problem: что такое HashSet , где оно находится и как оно работает? А еще вопрос : foreach (Coord coord in group.tabs)  - это означает, что мы структуру ищем в ... э-э, хэш списке? Вы серьёзно? Да.. кабрулирование трамициниала. Как - то так. 
18 ИИ - Множественное тестирование 00:06:46
19 чел. ★ 4.8 Done
  На этом уроке мы проведём тестирование
созданных методов операций над множествами.
Отчёт отправил: 1901. Neverwinter 2 Выполнено за 15 мин. [Показать отчёт]
Научился: Тестировать функции из локальных классов. 
Сложности: Придумать свой тест. Ух ты! Я правильно сделал в прошлый раз!! 
Комментарии: Сделал один тест, можно их бесконечно придумывать, но нужно двигаться дальше. Не будем на этом долго зацикливаться. 
19 ИИ - Ботовый алгоритм InterMines 00:17:38
19 чел. ★ 4.9 Done
  На этом уроке мы наконец-таки напишем код алгоритма,
о котором мы так много говорили в предыдущих уроках.
Отчёт отправил: 1901. Neverwinter 2 Выполнено за 15 мин. [Показать отчёт]
Научился: Реализовывать алгоритм решения неравенств для вычисления мин в саперё программно. 
Сложности: Ничего. 
Комментарии: Забил в программу предыдущий пример для проверки, и вуаля!! Только помоему в уроке ошибка. В группе В 0 мин, хотя там одна. Мы не сделали присвоение B.mines = min = max. 
20 ИИ - Открыть всё! 00:21:34
19 чел. ★ 5 Done
  На этом уроке мы перепишем по новому
алгоритм открытия всех клеток с
использованием класса Group.
Ура! Открываемость минного поля значительно возросла!
Это успех :)
Отчёт отправил: 1901. Neverwinter 2 Выполнено за 1 час. 00 мин. [Показать отчёт]
Научился: Реализовывать алгоритм составления и решения неравенств для поиска мин в сапёре. 
Сложности: Составить алгоритм. 
Комментарии: Каюсь, я ошибался - в предыдущем отчёте я написал, что в уроке ошибка... Нет, всё правильно. Я просто видимо незаметил, как Евгений Витольдович дописал ту строку которой у меня не хватало. Искусственный интеллект работает. Невозможно переоценить то что мы сделали - это восхитительно! На скринах 2 поля... одно среднее, другое - мастерское. 
21 ВТОРОЙ ТРЕТЬФИНАЛЬНЫЙ УРОК без видео
17 чел. ★ 4.9 Done
  Поздравляю с завершением создания Искуственного Интеллекта для решения Сапёра!

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

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

Впереди внедрение ИИ Бота для сторонней игры.
Отчёт отправил: 1901. Neverwinter 2 Выполнено за 7 час. 00 мин. [Показать отчёт]
Научился: Попытался оптимизировать код. 
Сложности: Оптимизация - это, порой, сложная вещь... Если не пытаться сразу делать нормально. 
Комментарии: Всё супер. Кому нужен - пишите - выложу. 
Видеообзор: clopyt_Q7tk
22 БОТ - Отмычка сапёра 00:31:45
4 теста
17 чел. ★ 4.9 Done
  На этом уроке мы начнём создавать настоящего бота,
который будет проходить сапёра из Windows XP.
Мы найдём указатель на программу,
вычислим координаты окна игры,
запрограммируем несколько
щелчков мышкой по ней.

Для работы нам потребуется именно XP версия сапёра, её можно скачать здесь:
www.videosharp.info/data/docs/winmine.exe.
Отчёт отправил: 1901. Neverwinter 2 Выполнено за 2 час. 00 мин. [Показать отчёт]
Научился: Искать окно, у которого известно имя. Также научился немного управлять мышкой. 
Сложности: Записать видео. Вообще непростой урок. Ну.. по сравнению.... 
Комментарии: На видео заметил, что на разные углы нажимает, ну да фиг с ним - не будем останавливаться на этой мелочи, координаты можно и подобрать, но наша цель другая! 
Видеообзор: _BgR6wFZ3NA
23 БОТ - Пиксельный металлоискатель 00:25:10
4 теста
16 чел. ★ 5 $
  На этом уроке мы начнём создавать пиксельный металлоискатель.
По цвету пикселей на экране мы будем восстанавливать значение открытой карты.
Ваша задача - довести его создание до логического завершения.
24 БОТ - Совместное фото 00:31:34
15 чел. ★ 5 $
  Считывание пикселя с экрана работает крайне медленно.
Вместо этого было решено сделать скриншот всей программы.
Чтобы дальнейшую обработку производить напрямую,
а не через медленные вызовы WinAPI методов.

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

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

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





Если вы пришли без приглашения -
введите тысяча двадцать четыре (цифрами).
Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

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

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

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


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


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