C# обучение для чайников

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

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

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

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

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

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

Первый взнос - 499 руб./30 дней.

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

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

Только ДО КОНЦА НЕДЕЛИ -
-50% скидка на первый взнос, всего 499 (вместо 999) рублей!
-20% скидка на ЕЖЕМЕСЯЧНЫЙ платёж!
Всего 2400 руб/месяц (вместо 3000 руб/месяц), или 80 руб./день - цена чашки кофе.


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

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

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

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

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







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



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

# Название видеоурока Видео / Тесты Решило Рейтинг Доступ
1 FREE Сокобан - Вступление 00:11:09
4 теста
158 чел. ★ 4.8 Done
  Я приглашаю вас на видеокурс по созданию полноценной игровой программы СОКОБАН. Я проведу вас за руку по всем этапам создания законченной интеллектуальной игры:
1. Создание редактора уровней.
2. Придумывание этих самых уровней.
3. Создание собственно игры.
4. Решение олимпиадной задачки для добавления ИИ.
5. Переделка игры в режим "на двоих".
6. Написание класса Phone для связи двух программ по сети.
7. Создание сетевой версии игры Sokoban.
Будет интересно!

В конце видео - первое задание: Научиться играть! :)
Ссылка на игру Сокобан
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 40 мин. [Показать отчёт]
Научился: Научился играть в Сокобан. Думаю курс будет очень интересным. 
Сложности: Над некоторыми уровнями пришлось подумать в этой игре. 
2 FREE Сокобан - Подготовка - Картинки и лабиринт 00:04:56
1 тест
116 чел. ★ 4.9 Done
  На этом уроке мы подготовим 6 пиктограмм и две картинки для игры,
а также придумаем свой собственный уровень, который запишем в текстовый файл.

Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 20 час. 40 мин. [Показать отчёт]
Научился: Продумывать заранее свою логику в создание программ, мотивировать себя. 
Сложности: Нарисовать, либо переделать картинки =) 
3 Сокобан - Редактор - Загрузка 00:33:25
110 чел. ★ 5 Done
  Мы начинаем создавать редактор уровней
для известной логической игры Sokoban.

Редактор будет создан за четыре урока.
На первом уроке мы создадим класс для загрузки
уровня с текстового файла и протестируем его работу.

Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 2 час. 55 мин. [Показать отчёт]
Научился: Работа с классами.  
Сложности: Вспоминать и привыкать к новому VS + English в меню. Ввожу потихоньку в привычку программирование. 
4 Сокобан - Редактор - Интерфейс 00:40:37
95 чел. ★ 5 Done
  На этом уроке мы создадим интерфейс программы
и сделаем отображение загруженного уровня на экране.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 3 дня 12 час. 38 мин. [Показать отчёт]
Научился: Настройка картинок, использование ресурсов программы (проекта). Написание своих функций для загрузки картинок, изменение динамического размера картинки от размера формы. 
Сложности: Главное внимательно следить и слушать. Если что-то непонятно - то можно немного назад откатить и пересмотреть. 
5 Сокобан - Редактор - Редактирование 00:38:33
88 чел. ★ 5 Done
  На третьем уроке мы сделаем наконец-таки редактирование поля.
Также реализуем возможность изменения размера лабиринта.
В конце напишем функцию для проверки корректности составленного уровня.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 4 час. 43 мин. [Показать отчёт]
Научился: Добавил событие на клик мышки по объекту PictureBox Реализовал отображение выбранной картинки Реализовал метод изменения размеров поля вместе с ограничениями (константы максимального и минимального значения) Написал функцию проверки уровня на наличие ошибок (проверка игрока на уровне и проверка ящика и мест для ящиков)  
Сложности: Пришлось вспоминать то, что было после отпуска =) Немного поправил картинку (иначе перфекционисту немного бы не понравилось). Остальное все в пределах нормы. 
6 Сокобан - Редактор - Сохранение 00:44:47
84 чел. ★ 4.9 Done
  На четвёртом уроке мы закончим создание редактора уровней.
Напишем самую главную функцию для сохранения сделанных изменений в файл.
Затем добавим кнопки перехода к следующему и предыдущему уровню.
Останется только немного облагородить интерфейс программы.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 5 час. 3 мин. [Показать отчёт]
Научился: Создал функцию сохранения уровня в классе. Протестировал пошагово работу данной функции в поисках ошибок. Реализовал переход между уровнями с сохранением. Добавил алгоритм создания нового уровня в конец текстового файла. 
Сложности: Все в пределах разумного =) 
7 Сокобан - Редактор - Улучшение 00:29:00
81 чел. ★ 5 Done
  Допиливаем и дорабатываем редактор до товарного вида.
Реализуем ещё несколько фишек.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 1 час. 45 мин. [Показать отчёт]
Научился: Изменение размеров через текстовое поле с возможностью нажатием клавиши Enter. Сделал возможность заполнения прямоугольной области выбранным элементов. Добавил автоматический подсчет ящиков и мест для них на уровне. 
Сложности: Прохожу мини-марафон. Увеличиваем темп как усвоения, так и запоминания полученной информации =) 
8 Сокобан - Редактор - Классика уровней 00:03:16
1 тест
31 чел. ★ 5 Done
  На этом уроке вам нужно выбрать любых два классических уровня
и создать их в нашей программе-редакторе.

Ссылка на классические уровни:
https://logic-games.spb.ru/sokoban/

Редактор можно скачать здесь:
https://www.videosharp.info/data/soft/SokobanEditor.zip
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 1 час. 0 мин. [Показать отчёт]
Научился: Нашел ошибку в процессе создания уровней. Исправил. Остального ничего сложного не было. 
9 Сокобан - Создаём свои уровни 00:08:05
1 тест
79 чел. ★ 4.9 Done
  Твоя задача - подготовить базу уровней для игры Сокобан.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 5 час. 2 мин. [Показать отчёт]
Научился: Нашел и парочку создал уровней. Один из них на скрине =) 
10 Сокобан - Игра - Интерфейс 00:43:45
1 тест
80 чел. ★ 5 Done
  Мы начинаем создание интеллектуальной игры СОКОБАН.
У нас уже есть все необходимые классы и уровни для создания полноценной игры.
На этом уроке мы создадим форму и настроим интерфейс окна лабиринта.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 15 час. 39 мин. [Показать отчёт]
Научился: Создал новый проект для прохождения уровней игры Сокобан. Создал форму и нарисовал заставку экрана (первой формы). Добавил нарисованную кнопку, которая вызывает форму Лабиринта игры. Добавил и настроил панель инструментов. Добавил панель PictureBox. Описал 2 делегата в глобальной части и написал функции отображения объекта и статистики. И откладка + тестирование написанного: в виде теста вывел Игрока на панель PictureBox и статистику.  
Сложности: Самое долгое ушло на создание как раз на первый: рисование заставки. Очень уж творческая работа! =) 
11 Сокобан - Игра - Управление 01:06:38
3 теста
69 чел. ★ 5 Done
  Теперь мы создадим класс логики игры Game,
используя который, мы реализуем управление человечком
курсорными клавишами клавиатуры.
А также сделаем переход на следующий уровень.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 1 день 1 час. 21 мин. [Показать отчёт]
Научился: Создал новый класс Game - логика игры. Подключил класс LevelFile и сделал загрузку уровня, его отображение. Реализовал кнопки перехода между уровнями, рестарт. Применил принцип 2 матриц (для неподвижных объектов и подвижных/игрока). Написал функцию обработки клавиш для передвижения Игрока. Реализовал логику движения по пустым клеткам и перемещения ящиков. Вывел статистику и нарисовал поздравительный экран.  
Сложности: Походу один из самых долгих, но интересных уроков тут =) 
12 Сокобан - Решалка - Тестер 00:59:55
1 тест
63 чел. ★ 5 Done
  На этом уроке мы напишем программу, которая будет
проверять правильность алгоритма поиска решения лабиринта.
http://www.videosharp.info/console/task/level=1178
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 14 час. 21 мин. [Показать отчёт]
Научился: Написал тестер (программку), которая проверяет возможное решение/прохождение по лабиринту текущем вариантом. Протестировал с различными 
Сложности: Если все внимательно слушать и изначально понять правильно задачу, то проблем не возникает! 
13 Сокобан - Решалка - Мышка 00:53:02
1 тест
62 чел. ★ 5 Done
  Мы начинаем решать задачу по решению игры Сокобан с одним ящиком.
Эта задача олимпиадного уровня на применение алгоритма поиска вширь.
Главный герой - мышка Альфа, которая желает затолкать яблочко к себе в норку.
Программу мы напишем за два урока.
На первом уроке мы создадим вспомогательную функцию MoveAlfa(),
которая подскажет мышке как попасть из одной клетки лабиринта в другую кратчайшим путём.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 10 час. 52 мин. [Показать отчёт]
Научился: Написал функцию Init с инициализацией directions. Разобрал и написал функцию перемещения мыши с применением прохода графа методом "поиска вширь". Просмотрел корректное выполнение данной функции пошагово на выявление ошибок и протестировал в различных вариантах. Сделал тестовый лабиринт для данной задачи. 
Сложности: Найти лабиринт и ввести его через редактор без ошибок =) Вроде отлично получилось, доволен! В остальном - с алгоритмом данным знаком, еще на Pascal реализовывал в графике (с выводом и отображением графа заданного случайными координатами) 
14 Сокобан - Решалка - Яблоко 00:44:23
2 теста
60 чел. ★ 5 Done
  На втором уроке мы переделываем написанный алгоритм поиска маршрута мышки.
Теперь мы разрешаем мышке толкать яблоко, и записываем все изменения их расположений.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 1 день 5 час. 2 мин. [Показать отчёт]
Научился: Написал функцию поиска пути от одной точки до другой (игрока) в отдельном классе. Создана на основе ее другой класс, для поиска уже пути игрока и "переноса/толкания" ящика из точки А в точку Б. Изменил описание структур под новые требования Протестировал алгоритм на правильность работы. 
Сложности: Была найдена ошибка при написании программы, которую исправил при первом запуске. Большие лабиринты считает очень долго, но тут уже в алгоритме дело и думаю это можно будет исправить в дальнейшем =) 
15 Сокобан - Решалка - Оптимизация 00:11:37
1 тест
60 чел. ★ 5 Done
  На этом коротком уроке мы рассмотрим два способа оптимизации нашей программы, в результате которых работать она станет просто молниеносно!!!
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 2 час. 24 мин. [Показать отчёт]
Научился: Оптимизировал алгоритм, дважды.  
Сложности: Удивлен результату. Вчера при первом варианте оставлял на ночь, не дождался результата, при изменение со списка на Dictionary не дождался (прошло уже минут 30). Через булев-массив решает меньше чем за секунду  \(О_о)/ 
16 Сокобан - Игра - Автоходы 00:42:22
1 тест
57 чел. ★ 5 Done
  Поздравляю, программа уже создана: можно играть, можно ею хвастаться.
На этом уроке мы добавим в игру автоходы, чтобы можно было
управлять нашим человечком с помощью мышки - указать, куда идти,
и даже указать, какой ящик куда нужно поставить.
Для этого нам потребуются два класса по решению лабиринта.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 1 день 3 час. 55 мин. [Показать отчёт]
Научился: Подключил 2 класса для поиска пути для Игрока (MouseSolver) и для поиска пути перетаскивания ящика из точки Start до точки Finish (AppleSolver); Добавил для них соответственно 2 обработчика - при нажатия кнопки мышки и двойной клик по ящику; Добивал в проект таймер (Timer) и создал его обработчик; Реализовал автоперемещение Игрока при наличие пути path; Сделал сброс автоходов при нажатии клавиши стрелок; Прошел уровни, используя функцию автоходов. 
Сложности: Сложного как такового не было, все логично. Форма по завершению всех уровней уже добавлена сразу же, как была нарисована. Остальное все - повысилось удовлетворение данной работой/проектом. Хвастался уже не раз как на работе, так и дома :) 
17 Сокобан - Редактор - На двоих 00:31:57
1 тест
54 чел. ★ 5 Done
  Переделываем редактор уровней, чтобы можно было создавать лабиринты для двоих игроков.
Создаём базу из 10 новых уровней игры в Сокобан для двоих.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 5 час. 49 мин. [Показать отчёт]
Научился: Нарисовал иконку 2-го Игрока, добавил в ресурсы. Добавил в панель инструментов кнопку для размещения на карте 2-го игрока. Добавил в структуру элемент user2, исправил функции CellToPicture, CharToCell и Cell ToChar. Добавил проверку при сохранении уровня для 2-х игроков. Создал 10 новых уровней для игры СОКОБАН на двоих 
Сложности: Как всегда, творческая часть - создание уровней. Отнимает много времени =) 
18 Сокобан - Игра - На двоих 00:15:40
54 чел. ★ 5 Done
  Переделать игру, чтобы в неё можно было играть вдвоём на одной клавиатуре.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 5 час. 30 мин. [Показать отчёт]
Научился: Добавил в ресурсы иконку 2-го Игрока. Скопировал файл с готовыми уровнями на 2 игрока. Добавил в структуру Cell элемент user2 Исправил функции, которые используют элемент user1 на использование 2-х элементов (user1 и user2) - функции CellToPicture, CharToCell и CellToChar. В классе Game исправил алгоритм загрузки уровня, изменил переменную Place mouse на массив Place[] mouse, исправил функцию Step Добавил в обработчик нажатие клавиш для 2-го игрока (цифровые 2, 4, 6, 8 и WASD) Протестировал работу программы  
Сложности: Все логично и понятно. Только странно выбирать цифровую клавиатуру для управления 2-ым игроком на одном ПК (если это ноутбук, то будет очень не удобно), а не WASD. Для себя реализовал... 
19 Сокобан - Телефон - TCP/IP протокол 00:47:44
1 тест
65 чел. ★ 5 Done
  На этом видеоуроке мы создадим три класса, которые удобно
использовать для передачи данных между двумя компьютерами.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 5 час. 48 мин. [Показать отчёт]
Научился: Создал базовый класс Phone и 2 простых класса PhoneServer и PhoneClient; Протестировал работу этих классов; Добавил в базовый класс Phone функцию Start для вызовы "нити"; Функцию Recv переделал через делегат; Протестировал работу с новыми изменениями и временным отключением клиента / сервера. 
Сложности: Данная тема в C# была не очень знакома, встречался немного на Python. Поэтому знал только основы и логику поверхностно... В целом требуется еще будет повторить данный урок. 
20 Сокобан - Игра - На двоих по сети 00:56:59
1 тест
52 чел. ★ 5 Done
  На этом уроке мы наконец-таки сделаем сетевую версию программы Sokoban для двоих.
Мы будем использовать телефонный класс Phone с прошлого урока.

Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 1 день 43 мин. [Показать отчёт]
Научился: Добавил в проект класс Phone. На форму WelcomeForm добавил режим выбора и поле с подключениями. Добавил 2 конструктора в класс LabirintForm, вызываем нужный конструктор из класса WelcomForm Создал функцию получения данных Recv(byte data) Настроил экземпляр phone и запустить его. В класс LabirintForm добавить переменные my_user и ot_user. Переделал switch обработки нажатых клавиш. Добавил в функцию Recv управление вторым игроком. Добавил  в класс Phone добавить параметр IsBackground = true Добавил синхронный рестарт и смену уровня. Вынес вызов функции LoadLevel из Recv Протестировал работу игры на двух ПК.  
Сложности: В целом все логично и понятно. 
21 Сокобан - Завершение 00:37:44
49 чел. ★ 5 Done
  Игра уже написана, но всегда можно сделать чуть-чуть лучше.
На этом уроке мы объединим оба варианта игры в одну программу
и загрузим файл с уровнями в ресурсы программы.
Теперь в одном ехешнике будет сразу всё!
Это финиш!!!
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 4 час. 51 мин. [Показать отчёт]
Научился: Добавил 2 файла уровней для Одиночной и для игры вдвоем. Добавил режим одиночной игры. Изменил класс LevelFile для загрузки нужного уровня из нужного файла из ресурса. Вернул алгоритм поиска маршрута в одиночную игру. Добавил режим игры вдвоем на одном ПК. 
Сложности: Если до этого было понятно, то тут тоже не возникло трудностей. WASD - добавлял еще пару уроков назад, видимо "все дороги" ведут к одинаковым решениям у программистов =) 
22 ФИНАЛЬНЫЙ урок. Видео-обзор проекта Сокобан 00:23:23
35 чел. ★ 5 Done
  Задание:
Записать видеообзор игры СОКОБАН.

Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 2 дня 23 час. 37 мин. [Показать отчёт]
Научился: Сделано, Ура! Записал и сделал видеоролик. 
Сложности: Создать видеоролик, но все уже пройдено. Следующие будет намного легче =) 
Видеообзор: V0xDx2c3If8
23 VIP. Бот для игры БАЛДА 01:22:57
16 чел. ★ 5 Done
  Используя текстовый файл из 27400 слов
создаём рекурсивный алгоритм подбора
слов для популярной игры Балда.
Отчёт отправил: 18493. Evgenii Kudriavtcev Выполнено за 15 час. 28 мин. [Показать отчёт]
Научился: Обдумал интерфейс программы Создал вспомогательные функции Создал функцию рекурсивного поиска Ускорил поиск добавлением еще одного массива "суффиксов" Поиграл игру с другими игроками. 
  Итого:   23 видеоурока 13 час. 51 мин.
20 тестов
12 чел. ★ 4.98  
  Финалисты:   LINKI,   Новопашин Владимир,   Tekashnik,   Алексей В.,   zhikharevav,   Evgenii Kudriavtcev,   chokayes,   Дмитрий,   Максим Лапшинов,   no name,   Max,   MaxB .

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





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

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

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

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


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



Научился: Запись видео обзора на разработанный продукт.
Трудности: Побороть свою лень)))
ОООООООЧЕНЬ крутой, интересный курс!!!! Рекомендую всем!
Смотреть видеозапись: https://www.youtube.com/watch?v=JJWEkydnemY