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.
Будет интересно!

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

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

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

Отчёт отправил: 8005. Александр Выполнено за 1 час. 20 мин. [Показать отчёт]
Научился: работе с  перечислениями. как можно хранить информацию просто в блокноте и читать ее оттуда. 
Сложности: все далось спокойно 
Комментарии: когда делал скриншот с содержанием матрицы - понял, что никогда не пользовался вкладками обозревателями переменных. Как их Открывать то? 
4 Сокобан - Редактор - Интерфейс 00:40:37
95 чел. ★ 5 Done
  На этом уроке мы создадим интерфейс программы
и сделаем отображение загруженного уровня на экране.
Отчёт отправил: 8005. Александр Выполнено за 40 мин. [Показать отчёт]
Научился: узнал как зять длины измерений матрицы. Узнал о "фишках" при динамическом составлении 
Сложности: ничего 
Комментарии: Первый раз такое  *матершинное слово* получилось, что кровь из глаза потекла. Дизайнер из меня тот еще. Подыскал картинки более ,как мне показалось ,подходящие друг к другу )) 
5 Сокобан - Редактор - Редактирование 00:38:33
88 чел. ★ 5 Done
  На третьем уроке мы сделаем наконец-таки редактирование поля.
Также реализуем возможность изменения размера лабиринта.
В конце напишем функцию для проверки корректности составленного уровня.
Отчёт отправил: 8005. Александр Выполнено за 1 час. 30 мин. [Показать отчёт]
Научился: практика с матрицами. компоненты ToolStrip. DropDownButton 
Сложности: все далось 
Комментарии: двигаемся дальше 
6 Сокобан - Редактор - Сохранение 00:44:47
84 чел. ★ 4.9 Done
  На четвёртом уроке мы закончим создание редактора уровней.
Напишем самую главную функцию для сохранения сделанных изменений в файл.
Затем добавим кнопки перехода к следующему и предыдущему уровню.
Останется только немного облагородить интерфейс программы.
Отчёт отправил: 8005. Александр Выполнено за 3 час. 00 мин. [Показать отчёт]
Научился: Научился изменять размер одномерного массива и работе с ним, при записи, стирании информации 
Сложности: Было сложным написать ту самую функцию SaveLevel(); Думал как то легче будет, а прилип на ней 
Комментарии: Все таки сделал все "нормально ". чтоб загружал пустой уровень если мы находимся в конце списка, чтоб вообще если не нашел уровней загружал нам пустой уровень для работы. И все корректно сохраняет. Подправил код, с учетом тех замечаний , что были на вебинаре. 
7 Сокобан - Редактор - Улучшение 00:29:00
81 чел. ★ 5 Done
  Допиливаем и дорабатываем редактор до товарного вида.
Реализуем ещё несколько фишек.
Отчёт отправил: 8005. Александр Выполнено за 2 час. 00 мин. [Показать отчёт]
Научился: новым событиям мышки. и улучшил навыки при работе с массивами 
Сложности: Прокопался я конкретно с "улчшением" этим так называемым. Все хотел добавить, чтобы можно было зажать правую кнопку мышки , вести по полю и объекты рисуются. Долго проискал так и не смог. Сделал , что по двойному щелчку такой режим активным становится и двойным щелчком он же выключается. Рисуется гораздо быстрее ,  конечно. Очень долго провозился с кнопкой" полного удаления уровня". Нюансы появлялись как грибы после дождя. Нужно было переписать все "шапки" с понижением в них значения уровня на 1. Нужно было отслеживать что мы удаляем, уже записанный в файл уровень или еще нет и тд. 
Комментарии: Не думал не гадал я что на редактор столько времени уйдет :) Мне если честно первые три уровня оригинального сокобана совсем не составило труда "набить" в блокноте. Но зато на составлении этого самого редактора много пошевелил извилинами, что не может не радовать. 
8 Сокобан - Редактор - Классика уровней 00:03:16
1 тест
31 чел. ★ 5 $
  На этом уроке вам нужно выбрать любых два классических уровня
и создать их в нашей программе-редакторе.

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

Редактор можно скачать здесь:
https://www.videosharp.info/data/soft/SokobanEditor.zip
9 Сокобан - Создаём свои уровни 00:08:05
1 тест
79 чел. ★ 4.9 Done
  Твоя задача - подготовить базу уровней для игры Сокобан.
Отчёт отправил: 8005. Александр Выполнено за 30 мин. [Показать отчёт]
Научился: Нашёл ошибку в редакторе во время рисования уровней. исправил 
Сложности: ничего 
Комментарии: Своих, собственно придуманных уровней не сделал. Все уровни из классического сокобана. В дальнейшем добавлю все, что есть. 
10 Сокобан - Игра - Интерфейс 00:43:45
1 тест
80 чел. ★ 5 Done
  Мы начинаем создание интеллектуальной игры СОКОБАН.
У нас уже есть все необходимые классы и уровни для создания полноценной игры.
На этом уроке мы создадим форму и настроим интерфейс окна лабиринта.
Отчёт отправил: 8005. Александр Выполнено за 1 час. 20 мин. [Показать отчёт]
Научился: создавать делегаты.  
Сложности: ничего 
Комментарии: Эх на этом уроке все таки зародились задумки что должно быть в моём будущем Сокобане. Надо делать :) И переделал я все таки некоторые картинки на более мультяшные и не HandMade. вроде больше нравится стало 
11 Сокобан - Игра - Управление 01:06:38
3 теста
69 чел. ★ 5 Done
  Теперь мы создадим класс логики игры Game,
используя который, мы реализуем управление человечком
курсорными клавишами клавиатуры.
А также сделаем переход на следующий уровень.
Отчёт отправил: 8005. Александр Выполнено за 16 час. 00 мин. [Показать отчёт]
Научился: У меня во время прохождения этого урока, отпочковалась , мне кажется, дополнительная масса на затылке где-то 
Сложности: Сам по себе урок не из простых, с его алгоритмами движения, наложениями матриц, от многое добавлял, что не могло пройти без осложнений 
Комментарии: Когда смотрел на кол-во уроков думал буду все свои задумки плавно вводить в игру. А получилось , что на этом уже уроке нужно создать полноценную игру на одного человека. А далее будут уже крутые "фичи". От себя сделал "игру" человека под именем с сохранением его результатов. Ввёл время, за которое человек прошёл уровень. Ввел кол-во попыток игрока на данном уровне. При загрузке игры снова и вводе своего ника - дается доступ к уровню, до которого данный игрок дошёл. Сделал таблицу рекордов. Где отображаются лучшие результаты и собственно игрока. Сделал кнопку отмены хода. Думал тяжелее она дастся, хорошо , что не так, под конец уже неплохо" подустал". Реализовал на основе такой структуры данных как Stack. На каждом ходу Пушит туда матрицу наших клеток. А при "отмене хода"  достает верхнюю. Принцип LIFO оказался как нельзя кстати. Теперь можно со споконой душой приступать к апргрейду игры  , ботами, решалками и прочим :) Спасибо! 
12 Сокобан - Решалка - Тестер 00:59:55
1 тест
63 чел. ★ 5 Done
  На этом уроке мы напишем программу, которая будет
проверять правильность алгоритма поиска решения лабиринта.
http://www.videosharp.info/console/task/level=1178
Отчёт отправил: 8005. Александр Выполнено за 2 час. 00 мин. [Показать отчёт]
Научился: Вспомнил про работу с консолью. Улучшил понимание алгоритма движения в Сокобане 
Сложности: ничего 
Комментарии: Сделал все таки, чтобы у нас мышка и яблоко не затирали после себя домик. Добавил пару проверок. И самое главное, Мне кажется что в программе, написанной в видеоуроке - ошибка. Согласно алгоритму, метод MoveMouse возвращает false если мы пытаемся идти в стенку, и результат "неверное решение".   Хотя правилами игры не запрещено "долбиться" в стенку. В своей программе я вроде реализовал возможность "пытаться пройти в стенку". Главное это чтобы яблоко оказалось в доме :)) Спасибо  
13 Сокобан - Решалка - Мышка 00:53:02
1 тест
62 чел. ★ 5 Done
  Мы начинаем решать задачу по решению игры Сокобан с одним ящиком.
Эта задача олимпиадного уровня на применение алгоритма поиска вширь.
Главный герой - мышка Альфа, которая желает затолкать яблочко к себе в норку.
Программу мы напишем за два урока.
На первом уроке мы создадим вспомогательную функцию MoveAlfa(),
которая подскажет мышке как попасть из одной клетки лабиринта в другую кратчайшим путём.
Отчёт отправил: 8005. Александр Выполнено за 1 час. 30 мин. [Показать отчёт]
Научился: узнал о волновом лабиринте.  Думал реализация будет наподобии как в "боте для балды" рекурсией. А тут вон око как с "очередью" можно. Классно 
Сложности: собственной сам волновой алгоритм 
Комментарии: Хороший урок , спасибо. Я так понимаю в ширину он называется , потому что мы во все стороны "разрастаемся"  плавно, а ни как в случае с рекурсией в одну сторону до упора. 
14 Сокобан - Решалка - Яблоко 00:44:23
2 теста
60 чел. ★ 5 Done
  На втором уроке мы переделываем написанный алгоритм поиска маршрута мышки.
Теперь мы разрешаем мышке толкать яблоко, и записываем все изменения их расположений.
Отчёт отправил: 8005. Александр Выполнено за 2 час. 00 мин. [Показать отчёт]
Научился: улучшил понимание алгоритма вширь. 
Сложности: пытался сам додуматься как оптмизировать. Код укоротился, но на работе программы не отразилось 
Комментарии: что же там в оптимизации 
15 Сокобан - Решалка - Оптимизация 00:11:37
1 тест
60 чел. ★ 5 Done
  На этом коротком уроке мы рассмотрим два способа оптимизации нашей программы, в результате которых работать она станет просто молниеносно!!!
Отчёт отправил: 8005. Александр Выполнено за 30 мин. [Показать отчёт]
Научился: Узнал о скоростях работы List<> и классов , которые работают c хэш-кодами. А про массив, вообще супер. поиска как такого т.е. нет. идёт сразу обращение в нужный адрес. 
Сложности: Понять и осмыслить, представить в пространстве 4-х мерный массив. и не Думаю что у меня это получилось. 
Комментарии: Такой короткий , но такой ёмкий урок, и ведь одна из главных тем программирования - быстродействие 
16 Сокобан - Игра - Автоходы 00:42:22
1 тест
57 чел. ★ 5 Done
  Поздравляю, программа уже создана: можно играть, можно ею хвастаться.
На этом уроке мы добавим в игру автоходы, чтобы можно было
управлять нашим человечком с помощью мышки - указать, куда идти,
и даже указать, какой ящик куда нужно поставить.
Для этого нам потребуются два класса по решению лабиринта.
Отчёт отправил: 8005. Александр Выполнено за 2 час. 00 мин. [Показать отчёт]
Научился: подключать классы стало очень легко. Полезным было изменять некоторые внутренности после слияния, чтобы всё работало , при этом не затронуть других :) 
Сложности: опять досадную ошибку сделал и долго ее отлавливал, с массивами. при передаче массива в другой класс, в его конструкторе написал this.map = map. А нет, и тут оказывается только ссылка в класс передается, и при изменении этого массива в этом классе, в исходном классе он также меняется. 
Комментарии: функция , конечно ,  вещь :) 
17 Сокобан - Редактор - На двоих 00:31:57
1 тест
54 чел. ★ 5 Done
  Переделываем редактор уровней, чтобы можно было создавать лабиринты для двоих игроков.
Создаём базу из 10 новых уровней игры в Сокобан для двоих.
Отчёт отправил: 8005. Александр Выполнено за 2 час. 00 мин. [Показать отчёт]
Научился: всё также, опыт в переделывании прошлого кода. 
Сложности: придумать свой уровень 
Комментарии: Сделал всё таки не второй редактор, а один, который предлагает выбор "на 1 или 2 игроков создавать карты". С соответствующими загрузкой и сохранением карт. Все карты Евгений Витольдовича нагло слизал. Свою постарался придумать. В голове вроде решает , по факту посмотрим :)) Старался сделать, что бы без кооперации ни шагу не сделать 
18 Сокобан - Игра - На двоих 00:15:40
54 чел. ★ 5 Done
  Переделать игру, чтобы в неё можно было играть вдвоём на одной клавиатуре.
Отчёт отправил: 8005. Александр Выполнено за 3 час. 00 мин. [Показать отчёт]
Научился: всё тому же. пользоваться готовым кодом, переделывать его под другие нужды. 
Сложности: Возникали сложности у меня с моей таблицей рекордов. адаптировал ее под игру на двоих. 
Комментарии: классный опыт не писать с нуля, а пользоваться готовым. Стараешься подумать , чтобы минимальные добавления привели в желаемому. 
19 Сокобан - Телефон - TCP/IP протокол 00:47:44
1 тест
65 чел. ★ 5 Done
  На этом видеоуроке мы создадим три класса, которые удобно
использовать для передачи данных между двумя компьютерами.
Отчёт отправил: 8005. Александр Выполнено за 2 час. 00 мин. [Показать отчёт]
Научился: Основные принципы ООП так сказать затронуты здесь :) хотелось бы практиковаться с ними. А касаемо урока - всё новое. Разумеется передача данных одна из интереснейших тем в программировании, дали "понюхать" верхушку этой темы в  уроке, какой же там "айсберг" внизу... 
Сложности: Сложным было понять, как это вообще работает,  что перед чем создавать и куда передавать. Напомнило когда первый раз создавал "графику" :)) Там тоже куча карандашей , битмэпов , графиков , имаджей . Надеюсь со времени устаканится 
Комментарии: Урок интереснейший, по кол-ву новой информации в нём. Единственное , что я не понял, зачем мы сделали делегат, и вынесли метод по получению Информацию из класса фон. Специально ,чтобы разобраться где программа и когда кидает исключения, где ожидаются подключения, где чего открывается, поставил перед собой задачу сделать всё в классе Phone, без делегата. Очень понравилось "шагать" по программе. Я очень хотел добавить помимо возможности передавать число еще и передавать цвет этого числа. Но увы, так и не осилил. Если кто - может - подскажите, как отправлять посылочку с несколькими полями. 
20 Сокобан - Игра - На двоих по сети 00:56:59
1 тест
52 чел. ★ 5 Done
  На этом уроке мы наконец-таки сделаем сетевую версию программы Sokoban для двоих.
Мы будем использовать телефонный класс Phone с прошлого урока.

Отчёт отправил: 8005. Александр Выполнено за 6 час. 00 мин. [Показать отчёт]
Научился: и снова изменять имеющийся код. Улучшил понимание при обмене данными 
Сложности: Волосы сначала дыбом встали, как подумал я, что мне делать со временем, откатом хода, таблицами рекордов, у меня же весь код был на проверках имени, считывании с файла текущих уровней и тд. Для меня пока нереально сделать, чтобы у обоих уровень по считыванию загружался одинаково, сохранялось по какому либо результату , поэтому Ифами обошёл весь код - где привязаны имена с результатми 
Комментарии: Все режимы игры сделаны в одном окне. Для игры по сети оставил возможность играть с автоходами ( мышкой ). Очень понравилась идея решения с передачей команд "таймеру". Пытался решить , вызывая в отдельном потоке методы, чтобы не ждал "приёмщик байтов". Но вопросы вылезали как грибы, побеждая одну - лезет вторая. Например, оказывается ( я не знал) к компонентам формы нельзя обращаться из потока,  в котором они не были созданы. Это почитал - нашёл - отключил. Далее - нельзя делать родителем объект тех элементов , которые созданы в другом потоке... В общем плюнул я, сделал Как в уроке - на Таймер. И все равно очень доволен :) А учить надо море всего, чем дальше углубляешься - тем больше понимаешь что меньше знаешь. Как во всём :) Спасибо 
21 Сокобан - Завершение 00:37:44
49 чел. ★ 5 Done
  Игра уже написана, но всегда можно сделать чуть-чуть лучше.
На этом уроке мы объединим оба варианта игры в одну программу
и загрузим файл с уровнями в ресурсы программы.
Теперь в одном ехешнике будет сразу всё!
Это финиш!!!
Отчёт отправил: 8005. Александр Выполнено за 6 час. 00 мин. [Показать отчёт]
Научился: танцевать с бубном , не иначе 
Сложности: попытаться сделать хоть что-то , чтобы сетевая игра была хоть чуточку стабильнее 
Комментарии: В общем немало времени я еще провёл около этого кода, в попытках сделать сетевую игру стабильнее, если хотя бы не стабильнее, то логичнее. Чтобы один игрок не мог начинать двигаться и играть, пока не подсоединится второй.  Синхронизация данных - это космос для меня на данном этапе. Поэтому сделал , при срыве соединения, уведомление, что второй игрок отключился, и принудительное закрытие формы лабиринта первому. Всё к коду больше не притронусь :))) чтобы не сломать. Всё работает! Быть может еще звуки только добавлю, но это не должно никак влиять. Это финиш! Спасибо 
22 ФИНАЛЬНЫЙ урок. Видео-обзор проекта Сокобан 00:23:23
35 чел. ★ 5 Done
  Задание:
Записать видеообзор игры СОКОБАН.

Отчёт отправил: 8005. Александр Выполнено за 30 мин. [Показать отчёт]
Научился: практика в видеообзорах 
Сложности: Честно, это было с третьего раза. Первые два не пошли по разным причинам. И третий раз уже прожёвывал слова и торопился. 
Комментарии: Большое спасибо за данный курс. Честно, он превзошёл мои ожидания. Прямо конкретно в точку, что надо было для дальнейшего планомерного изучения мною программировония. Не легко и не сверхсложно. 
Видеообзор: https://youtu.be/7vRP5yFHge0
23 VIP. Бот для игры БАЛДА 01:22:57
16 чел. ★ 5 $
  Используя текстовый файл из 27400 слов
создаём рекурсивный алгоритм подбора
слов для популярной игры Балда.
  Итого:   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