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

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

Продажа пакета приостановленна

Купить этот пакет можно только во время акций.

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

# Название видеоурока Решило Рейтинг Доступ
1 ИГРА - Счастливый сапёр 00:10:45 17 чел. ★ 5 Done
  Отчёт отправил: 10558. Иван Воронин Решено за 10 мин. [Показать отчёт]
Научился: провторение старого 
Сложности: ничего 
Комментарии: отличная игра, замечательный курс, позитивное видео, идём дальше... 
2 ИГРА - Минная картотека 00:11:57 17 чел. ★ 5 Done
  Отчёт отправил: 10558. Иван Воронин Решено за 20 мин. [Показать отчёт]
Научился: повторил старое 
Сложности: найти время 
Комментарии: всё супер, идём дальше 
3 ИГРА - Классные мины 00:20:47 15 чел. ★ 5 Done
  Отчёт отправил: 10558. Иван Воронин Решено за 30 мин. [Показать отчёт]
Научился: повторение пройденного 
Сложности: ничего 
Комментарии: Отлично, идём дальше 
4 ИГРА - Матрица картинок 00:25:08 15 чел. ★ 5 Done
  Отчёт отправил: 10558. Иван Воронин Решено за 1 час. 00 мин. [Показать отчёт]
Научился: динамически размещать панель, а на ней объекты так же 
Сложности: ничего 
Комментарии: панель и боксики на панели добавляются динамически добавил метод ресайза при максимайзе формы, при возврате из максимайза обратно ресайз при изменении размера формы происходит в конце ресайза (т.е. тянешь форму, ничего не происходит, отпустил мышь, ресайзунлось) 
5 ИГРА - Карта минного поля 00:19:35 15 чел. ★ 5 Done
  Отчёт отправил: 10558. Иван Воронин Решено за 40 мин. [Показать отчёт]
Научился: повторение пройденного 
Сложности: найти время 
Комментарии: для отображения данных из map[,] использовал .BackgroundImage, а для top[,] использовал .Image, для этого добавил в ShowBox() доп параметр (соответственно в делегат тоже) и разделил ShowPicture() на ShowMap() и ShowTop() з.ы. ну и все сопутствующие изменения в коде для работоспособности данного метода формирования картинки поля =) всё супер, идём дальше =)  
6 ИГРА - Зелёный флаг 00:17:40 15 чел. ★ 5 Done
  Отчёт отправил: 10558. Иван Воронин Решено за 40 мин. [Показать отчёт]
Научился: повторение старого 
Сложности: найти время 
Комментарии: при клике правой клавишей мыши добавил возможность ставить вопросик если там мина, то открывается взорвавшаяся (на красном фоне) 
7 ИГРА - Алгоритмический подход 00:13:27 15 чел. ★ 5 Done
  Отчёт отправил: 10558. Иван Воронин Решено за 1 час. 00 мин. [Показать отчёт]
Научился: повторение старого 
Сложности: найти время 
Комментарии: добавил метод отображения всех мин, если подорвался на одной 
8 ИГРА - Бомбовые алгоритмы 00:29:29 14 чел. ★ 5 Done
  Отчёт отправил: 10558. Иван Воронин Решено за 4 час. 00 мин. [Показать отчёт]
Научился: повторение старого 
Сложности: ничего 
Комментарии: заменил gameOver на gamePhase, так как 3 игровых фазы и bool было маловато неверно проставленные флажки превращаются в ложные мины (перечёркнутые) при подрыве на настоящей в тайтле приложения после начала игры отображается статистика: сколько осталось открыть безопасных клеток до победы и сколько осталось флажков, если флажки кончились, вместо них ставятся только вопросики (если флажки ещё есть, можно перебирать вопросик или флажок) добавил сообщение о победе/проигрыше, после чего игра начинается с нуля рефакторинг кода (повторяющиеся действия вынес в общий метод/функцию) 
9 ИГРА - ПОЛУФИНАЛЬНЫЙ УРОК 14 чел. ★ 4.9 Done
  Отчёт отправил: 10558. Иван Воронин Решено за 24 час. 00 мин. [Показать отчёт]
Научился: закрепил полученные ранее знания 
Сложности: перестать добавлять фишки (идеи ещё есть) ну и найти время на всё это =) 
Комментарии: Список нововведений относительно базовой версии из курса “Сапёр на C#”: Как обычно создал уникальную иконку для бинарника и форм. Нарисовал текстуры в цветовой палитре ZX Spectrum. Добавлена возможность выбора сложности игры. При выборе сложности, динамически изменяется размер поля. Отображается галочка напротив выбранной сложности. Добавлены ограничения по количеству мин относительно размеров поля. Ограничение клеток по высоте и ширине, для удобства восприятия. Добавлена форма настроек “Особой...” игры. Количество мин трёхзначное. Ограничение по минимальной высоте и ширине поля в зависимости от размера поля. Добавлена форма отображения “Чемпионов” и соответствующий пункт меню. Добавлен счётчик игрового времени независимый для каждой сложности. “Чемпионы” хранятся в отдельном файле. Добавлена система сохранения текущей игры в соответствующий файл. Если при выборе сложности найдено сохранение для неё, то загружается карта поля и можно продолжить игру, если же файл не найден, повреждён или параметры отличаются от выбранных, файл удаляется, а игровое поле генерируется с нуля. Добавлена возможность сохранять текущие параметры игры. При закрытии и открытии игра запускается с последними выбранными параметрами и загружает сохранение игры если оно найдено и корректно. В начале игры или при загрузке сохранения игра становится на паузу до первого клика, в тайтле отображается текущее время, потраченное на данную карту. Как только игра закончена (победили/проиграли), то сохранение текущей игры удаляется. Добавлена форма ввода “Имени рекордсмена” для сохранения в списке “Чемпионов”. Добавлена поддержка формата mp3. Добавлены 4 мелодии формата ZX Spectrum с оригинальных дискет для окна «О игре». При открытии окна «О игре», треки чередуются по очереди (музыка играет по кругу пока не закрыть окно, при этом сама игра становится на паузу, таким образом можно подумать над очередным ходом под ностальгические мелодии). Добавлены звуки: тиканье таймера и взрыв бомбы. В папке “data” файлы расположены по типу: “save” и “sound”. Если побит рекорд, открывается окно ввода “Имени рекордсмена”, после чего открывается список “Чемпионов”. Оптимизирован размер сохранений игры (теперь они весят в 4 раза меньше). Добавлено отображение версии и билда игры в окне «О игре». 
Видеообзор: https://youtu.be/gzJXIH3nWLU
10 ИИ - Как пройти игру 00:03:38 13 чел. ★ 4.9 Done
  Отчёт отправил: 10558. Иван Воронин Решено за 10 мин. [Показать отчёт]
Научился: повторение пройденного материала 
Сложности: найти время 
Комментарии: по поводу внутри игрового алгоритма: пробегать по всему полю в поиске цифр, если нашли клетку с цифрой, то считаем сколько вокруг неё флажков и не открытых клеток, потом отнимаем от этой цифры количество флажков и если это равно 0, то кликаем по цифре, если же не равно 0, смотрим сравниваем полученное число с количеством не открытых клеток, если оно совпало, то ставим флажки на неоткрытых клетках вокруг цифры и так до тех пор, пока не кончатся клетки для обработки подобным образом. по поводу считывания данных с чужого сапёра, вариантов несколько, самый простой это анализ клеток поля по цвету который присутствует в них. обычно в сапёрах цифры разноцветные, если же такой способ сложен, можно использовать матрицы пикселов для сравнения типо топологии клеток, подобный способ проблем обычно не имеет, есть ещё один способ, написать хук код, чтобы внедрится в код приложения и получить доступ к массиву данных а там уже дело техники =) 
11 ИИ - Очевидные шаги 00:09:00 13 чел. ★ 5 Done
  Отчёт отправил: 10558. Иван Воронин Решено за 15 мин. [Показать отчёт]
Научился: закрепление пройденного материала 
Сложности: ничего 
Комментарии: вроде больше нет 100%, проверил несколько раз =) з.ы. в углу единичка, это я по углам кликал, пока не наткнулся на угол, в котором открылось больше клеток и подходил очевидный алгоритм 
12 ИИ - Пересечение множеств 00:34:53 11 чел. ★ 5 Done
  Отчёт отправил: 10558. Иван Воронин Решено за 1 час. 00 мин. [Показать отчёт]
Научился: поиску мин путём пересекающихся множеств 
Сложности: найти время 
Комментарии: на втором скриншоте прошёл Любителя, из прошлого урока, данным методом =)  
13 ИИ - Класс группы 00:17:28 12 чел. ★ 5 Done
  Отчёт отправил: 10558. Иван Воронин Решено за 20 мин. [Показать отчёт]
Научился: закрепление пройденного материала 
Сложности: ничего 
Комментарии: назвал табуляторы ячейками, а вместо SortedSet использовал HashSet, идём дальше 
14 ИИ - Элементарные алгоритмы 00:10:03 11 чел. ★ 5 Done
  Отчёт отправил: 10558. Иван Воронин Решено за 30 мин. [Показать отчёт]
Научился: закрепил пройденный материал 
Сложности: ничего 
Комментарии: отличное начало реализации помощника для игры "Сапёр" =) идём дальше 
15 ИИ - Жучкин алгоритм 00:39:05 11 чел. ★ 4.8 Done
  Отчёт отправил: 10558. Иван Воронин Решено за 1 час. 30 мин. [Показать отчёт]
Научился: повторил пройденный материал 
Сложности: ничего 
Комментарии: При переключении между режимами игры, пауза не ставится, если была найдено и успешно загружено сохранение. При активации паузы через окно "О игре" игры переносится в режим "Особые...", в этом режиме уже не попасть в таблицу Чемпионов. Добавлена логика игры для реализации "Подсказки" - аналогия Бота, который открывает и помечает поле если уверен на 100% Активация "Подсказки" осуществляется через пункт меню: "Справка - Подсказка", либо нажатием на горячую клавишу: F9 
Видеообзор: https://youtu.be/pgH9ZwDKS64
16 ИИ - Вспомнить всё 00:23:17 11 чел. ★ 5 Done
  Отчёт отправил: 10558. Иван Воронин Решено за 30 мин. [Показать отчёт]
Научился: повторение пройденного 
Сложности: найти время 
Комментарии: Очень интересный курс, спасибо за продолжение =) 
17 ИИ - Операции со множествами 00:15:19 11 чел. ★ 5 Done
  Отчёт отправил: 10558. Иван Воронин Решено за 45 мин. [Показать отчёт]
Научился: повторение пройденного 
Сложности: ничего 
Комментарии: отличная идея реализовать данный алгоритм вручную для наглядности, а реализовать при помощи методов HashSet можно будет потом, как домашнее задание =) 
18 ИИ - Множественное тестирование 00:06:46 11 чел. ★ 4.8 Done
  Отчёт отправил: 10558. Иван Воронин Решено за 30 мин. [Показать отчёт]
Научился: повторение пройденного 
Сложности: ничего 
Комментарии: Данное тестирование выявило ошибки при копипасте, при спешке такое бывает =) 
19 ИИ - Ботовый алгоритм InterMines 00:17:38 11 чел. ★ 4.9 Done
  Отчёт отправил: 10558. Иван Воронин Решено за 40 мин. [Показать отчёт]
Научился: повторение пройденного 
Сложности: ничего 
Комментарии: отличный урок, так же добавил проверку в виде всплывающего окошка, где для наглядности отобразил итоговое содержимое групп A, B и C. 
20 ИИ - Открыть всё! 00:21:34 11 чел. ★ 5 Done
  Отчёт отправил: 10558. Иван Воронин Решено за 1 час. 40 мин. [Показать отчёт]
Научился: повторение пройденного 
Сложности: ничего 
Комментарии: Добавил проверку первого клика перед сохранением игры (чтобы не сохранялись пустые поля). Обновлено условие проверки "побит рекорд или нет". Обновлена система генерации окна поздравления с Рекордом в текущей сложности. В тайтле помимо названия игры и текущего времени игры, теперь отображается текущая сложность. Старый алгоритм сохранил в функции: StartBot1() и деативировал. Новый алгоритм бота добавлен в функции: StartBot2() и активирован. Проверка победы/проигрыша добавлена после завершения работы бота (ранее проверка была в процессе его работы). 
21 ИИ - ПОЛУФИНАЛЬНЫЙ АЛГОРИТМ 10 чел. ★ 5 Done
  Отчёт отправил: 10558. Иван Воронин Решено за 3 час. 00 мин. [Показать отчёт]
Научился: замедлять процесс работы циклов при этом чтобы видна была текущая стадия каждой итерации =) 
Сложности: ничего 
Комментарии: При открытии окна "О игре" теперь чередуются 3 трека (“about3.mp3” переименовал в “bot.mp3”, а “about4.mp3” соответственно в “about3.mp3”). “bot.mp3” добавлен как мелодия(индикатор) работы бота. Теперь во время работы бота видно, как он открывает поле и ставит/снимает флажки. з.ы. самый прикольный момент это установка/снятие флажков, как будто бот не уверен в этом, имитация ИИ, не стал убирать у него эту “не уверенность”, выглядит как фишка =) 
Видеообзор: https://youtu.be/FAFi9MG_SrQ
22 БОТ - Отмычка сапёра 00:31:45 10 чел. ★ 4.9 Done
  Отчёт отправил: 10558. Иван Воронин Решено за 2 час. 15 мин. [Показать отчёт]
Научился: рисовать флажками и вопросиками пиксель-арт на поле Сапёра =) 
Сложности: найти время 
Комментарии: Отличный урок, намного интереснее писать кликер на C#, чем на ActionScript, хотя на нём много чего удобно делать =) 
23 БОТ - Пиксельный металлоискатель 00:25:10 10 чел. ★ 5 Done
  Отчёт отправил: 10558. Иван Воронин Решено за 7 час. 00 мин. [Показать отчёт]
Научился: Повторение пройденного 
Сложности: найти время 
Комментарии: Создал в фотошопе иконку для форм и бинарника. Добавил метод определения цвета пикселя на экране. Метод определения наличия запущенного процесса игры Сапёр вынесен в отдельную функцию (так как надо не только для начала работы, но и для проверки наличия процесса окна игры Сапёр в циклах бота). Добавлен метод определения объектов на игровом поле игры Сапёр. Добавлен progressBar для визуализации процесса выполнения циклов. Внедрена игра Жизнь для демонстрации на игровом поле Сапёра. Добавлена кнопка запуска с данными о скорости циклов и времени между ними для игры Жизнь. Добавлены trackBars для настройки скорости и времени между циклами игры Жизнь. При изменении скорость и времени циклов, информация о текущих значениях отображается на кнопке запуска игры Жизнь. Теперь бот заглядывает в меню игры для проверки: установлена возможность ставить Вопросики или нет. Если нужно нарисовать картинку, то бот проверяет возможность устанавливать Вопросики, если данная возможность отключена, он её включает. Если запущена игра Жизнь, бот проверяет возможность установки Вопросиков, если возможность активна, то он её отключает. Если в процессе анализа и подготовки игрового поля Сапёр, для запуска игры Жизнь, бот находит Вопросики, он их убирает. Теперь размеры рисунка относительны размеров игрового поля Сапёр, чтобы ромбик вписывался и был всегда по центру. Добавлены textBoxes для сбора данных об игровых объектах на поле Сапёра. Добавлена анимация заполнения textBoxes. Игра жизнь использует динамическое программирование (не зря выпит литр кофе в своё время). з.ы. Что меня с подвигло на сие деяние? Пунктик с тремя звёздочками в задании к этому уроку =) Я, понимая, что это тривиальная задача, не мог не решить её, оставалось за малым, найти время, в течении дня несколько раз отвлекался по делам, но всё же успел доделать к концу дня. 
Видеообзор: https://youtu.be/ODYr6nRgIt4
24 БОТ - Совместное фото 00:31:34 9 чел. ★ 5 Done
  Отчёт отправил: 10558. Иван Воронин Решено за 1 час. 30 мин. [Показать отчёт]
Научился: делать скриншот выделенной области на экране 
Сложности: найти время 
Комментарии: Новичок: 00:00:00.0103542 - Создание и сохранение скриншота окна процесса. 00:00:00.0343467 - Создание скриншота рабочего стола. 00:00:00.4376924 - Анализ игрового поля по скриншоту. 00:00:03.0741300 - Анализ игрового поля используя функцию GetPixel() библиотеки gdi32.dll. Любитель: 00:00:00.0138548 - Создание и сохранение скриншота окна процесса. 00:00:00.0316497 - Создание скриншота рабочего стола. 00:00:01.5693508 - Анализ игрового поля по скриншоту. 00:00:10.0371520 - Анализ игрового поля используя функцию GetPixel() библиотеки gdi32.dll. Профессионал: 00:00:00.0149438 - Создание и сохранение скриншота окна процесса. 00:00:00.0336072 - Создание скриншота рабочего стола. 00:00:02.9528080 - Анализ игрового поля по скриншоту. 00:00:19.7216873 - Анализ игрового поля используя функцию GetPixel() библиотеки gdi32.dll. 
25 БОТ - Гадание по фото 00:39:50 9 чел. ★ 5 Done
  Отчёт отправил: 10558. Иван Воронин Решено за 12 час. 00 мин. [Показать отчёт]
Научился: анализировать графические файлы 
Сложности: найти время и остановиться оптимизировать 
Комментарии: Отличный урок, вебинар ещё круче, как видно из скриншотов, с правой стороны проанализировано поле из графического файла (справа от окна приложения отобразил его для наглядности), а в правом окне приложения отобразились все комбинации координат (пока без вопросика, если идея по доработке алгоритма сравнения, пока чтобы не тратить время, сделал базовый). з.ы. Добавил функционал автоматического поиска уникальных объектов на поле (в графическом файле). 
26 БОТ - Сканер минного поля 00:23:55 9 чел. ★ 5 Done
  Отчёт отправил: 10558. Иван Воронин Решено за 24 час. 00 мин. [Показать отчёт]
Научился: Повторил множества, MD5, массивы, матрицы, работу с графикой, файлами... 
Сложности: найти время 
Комментарии: Начал исследования уже давно, но именно по поиску объектов по одному пикселю с 18 числа 7 утра, на уроке использовался слишком простой алгоритм, я вначале применил рекурсию, чтобы перебрать все комбинации пикселей, процесс не быстрый, потом решил применить анализ всех уникальных плашек на основе множеств и исключить дубликаты, намного шустрее процесс, почти моментальный, но оказалось, что уникальные пикселы имеют все объекты, кроме закрытой и открытой плашки, если не использовать флажки и вопросики, то закрытая плашка имеет уникальные пикселы, а открытая определяется методом исключения, но для работы бота нужна плашка с флажком, поэтому такой метод не подходит. А так как я ранее уже реализовал определение плашек в 1,5 пикселя, вариант с двумя пикселами я конечно тоже реализовал для общего развития, но меня он не очень радует, поэтому я решил реализовать систему автоматического анализа эталонного скриншота на предмет уникальных объектов. Данный метод полностью устраняет ручной перенос полученных координат для дальнейшего использования при работе бота. Получается что система полностью автономна, проверяет вначале наличие уникальных объектов (используются множества) и если их нет, вначале анализирует эталонный файл, формируя список, далее уже занимается анализом поля. При этом 100% определяется любое количество уникальных объектов на поле, если бы их было более 12, универсальная система =) з.ы. метод +-1 для определения объектов реализовал, но для того, чтобы было, сам метод не используется так как надобности нет и проблем с цветами тоже не наблюдается, но идея интересная, может пригодится когда нибудь. 
27 БОТ - Выход на финишную прямую 00:14:38 9 чел. ★ 5 Done
  Отчёт отправил: 10558. Иван Воронин Решено за 1 час. 00 мин. [Показать отчёт]
Научился: Закрепление полученного ранее 
Сложности: найти время 
Комментарии: Перенёс необходимые файлы в проект из игры сапёра, подготовился к след уроку =) з.ы. как видно из скриншота, теперь отображается последний используемый скриншот, необходимый как точка отсчёта для действий. В данном случае отображает то, что было до последних телодвижений БОТа. 
28 БОТ - Неуправляемый Интеллект 00:16:00 9 чел. ★ 5 Done
  Отчёт отправил: 10558. Иван Воронин Решено за 40 мин. [Показать отчёт]
Научился: Повторил пройденное 
Сложности: найти время 
Комментарии: Адаптировал алгоритм бота, проблема зацикливания бота была решена очень давно, поэтому с ней не столкнулся. При запуске любой задачи окно игры сапёра становится вначале активным, если оно свёрнуто, разворачивается и только потом идёт работа с ним. 
29 БОТ - Всё открыто! 00:23:23 9 чел. ★ 5 Done
  Отчёт отправил: 10558. Иван Воронин Решено за 25 мин. [Показать отчёт]
Научился: Повторение пройденного 
Сложности: найти время 
Комментарии: Добавил проигрывание мелодии во время работы бота =) Остальные фишки работают априори, так как реализованы ранее (анимация движения курсора и т.д.) всё покажу в видео-обзоре =) 
30 ФИНАЛЬНЫЙ УРОК 9 чел. ★ 5 Done
  Отчёт отправил: 10558. Иван Воронин Решено за 1 час. 00 мин. [Показать отчёт]
Научился: Ничему новому 
Сложности: найти время 
Комментарии: Добавил интерактивную легенду найденных уникальных объектов игрового поля при парсинге эталонного скриншота. остальные нововведения, которые добавлялись в процессе разработок на каждом уроке см. видео =) з.ы. плюс недокументированные изменения и оптимизации. 
Видеообзор: https://youtu.be/e7GKl7HkZYM
31 VIP - Хакерский подход 00:19:57 9 чел. ★ 5 Done
  Отчёт отправил: 10558. Иван Воронин Решено за 2 час. 00 мин. [Показать отчёт]
Научился: Работать с процессом напрямую через память 
Сложности: найти время 
Комментарии: Замечательное завершение не менее замечательного курса, спасибо огромное. 
Видеообзор: https://youtu.be/iGEqLHpzo4c
32 VIP - Жизнь у Сапёра 01:22:45 2 чел. ★ 5 Done
  Отчёт отправил: 10558. Иван Воронин Решено за 2 час. 00 мин. [Показать отчёт]
Научился: Повторил пройденное 
Сложности: найти время 
Комментарии: Потраченное время в основном ушло на создание, подготовку и обработку видео в редакторе, так как что игру Жизнь, что Жизнь на поле Сапёра реализовал ранее. 
Видеообзор: https://youtu.be/Ut6wtKaxltQ
  Итого:   32 видеоурока общей продолжительностью 10 час. 56 мин. 2 чел. ★ 4.98  
  Финалисты:   Иван Воронин,   Lik_Kirill .

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




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

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

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

Ты в любой момент сможешь отписаться от рассылки.
Научился: Создал обзор всех игр созданных на курсе.
Трудности: Ничего.
Все норм.
Смотреть видеозапись: https://youtu.be/TwVxsdtOhCg
Научился: Ничему
Трудности: Звук не писался - записал это видео с 3 раза.
Следующий курс будет шарики.
Смотреть видеозапись: https://youtu.be/K-TSduOP0Wo