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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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







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



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

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

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

Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 1 час. 00 мин. [Показать отчёт]
Научился: Подбирать исходный материал, продумывать логику уровня 
Сложности: придумать уровень 
Комментарии: я решил немного переиграть цель игры. общую цель хочу сделать как из игры CounterStrike. хочу чтобы дяденьки полицейские искали заложников и отводили в места эвакуации. а всё остальное как у Сокобана. надеюсь в дальнейшем с Вашей помощью реализую) 
3 Сокобан - Редактор - Загрузка 00:33:25
102 чел. ★ 5 Done
  Мы начинаем создавать редактор уровней
для известной логической игры Sokoban.

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

Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 3 час. 00 мин. [Показать отчёт]
Научился: Считывание файла для последующего его постоянного использования(запись в массив), отработал работу с отладчиком, с просмотром данных в любой момент работы программы! 
Сложности: назвал переменные по-своему, и запутался. пришлось начинать с начала. а обычно я конечно же стараюсь делать свои переменные. 
Комментарии: Дополнительный(свой) уровень делал на работе, прикладывал в предыдущем задании. поэтому здесь только "рабочие" 
4 Сокобан - Редактор - Интерфейс 00:40:37
87 чел. ★ 5 Done
  На этом уроке мы создадим интерфейс программы
и сделаем отображение загруженного уровня на экране.
Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 3 час. 00 мин. [Показать отчёт]
Научился: Считывать из файла данные и интерпретировать их в графические объекты, расположенные на форме. 
Сложности: Понимание перехода:  текстовый файл->массив->картинка->заполненная форма 
Комментарии: Я не понял почему и зачем нужно размещать картинки на Panel а не напрямую на Form, или Form что-то не поддерживает? 
5 Сокобан - Редактор - Редактирование 00:38:33
80 чел. ★ 5 Done
  На третьем уроке мы сделаем наконец-таки редактирование поля.
Также реализуем возможность изменения размера лабиринта.
В конце напишем функцию для проверки корректности составленного уровня.
Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 3 час. 00 мин. [Показать отчёт]
Научился: Строить свои редакторы уровней, в которых можно самому менять значение ячеек, количество столбцов и строк матрицы. Строить дополнительные оптимизации и проверки на корректность уровней. 
Сложности: уследить что за чем идет, чтобы самому контролировать код, а не чтобы код контролировал меня! 
Комментарии: Почему размеры ящика у вас это две величины? они же всегда должны быть одинаковыми(квадратными), я их сделал одним значением. Так же как и максимальный и минимальный размер полей. При добавлении нового столбца/строки лучше чтобы добавлялись стены (ведь это крайние клетки), а не пустое поле. Что я тоже реализовал, просто поставив первым значение Wall при создании Cell{} 
6 Сокобан - Редактор - Сохранение 00:44:47
77 чел. ★ 4.9 Done
  На четвёртом уроке мы закончим создание редактора уровней.
Напишем самую главную функцию для сохранения сделанных изменений в файл.
Затем добавим кнопки перехода к следующему и предыдущему уровню.
Останется только немного облагородить интерфейс программы.
Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 3 час. 00 мин. [Показать отчёт]
Научился: Работа с файлами, вынесение всех используемых переменных в общий доступ, а не нужных - оставлять внутри процедуры. Разбивать программу на много мелких процедур, чтобы впоследствии использовать только эти кусочки для уже другого результата, чем использовались в начале. Отработал навык пользования Отладчиком. 
Сложности: Работа с отладчиком, держать в голове какая процедура за какой идет и что выполняет, поэтому пришлось писать много комментариев в программе. 
Комментарии: Я думаю что при переходе между уровнями нельзя их сохранять, а вдруг я передумал и хочу вернуть как было?! а при сохранении добавить проверку что на карте есть юзер и есть одна коробка, это как бы минимальное требование к уровню. У вас ещё процедуры называются одинаково (SaveLevel) в классе LevelFile и в SokobanEditor. Мне кажется что может быть путаница. 
7 Сокобан - Редактор - Улучшение 00:29:00
74 чел. ★ 5 Done
  Допиливаем и дорабатываем редактор до товарного вида.
Реализуем ещё несколько фишек.
Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 3 час. 00 мин. [Показать отчёт]
Научился: С текстового поля по мною указанному разделителю считывать информацию для дальнейшего использования. Работа с логикой программы 
Сложности: В цикле установил не ту переменную и программа зацикливалась, разбирался почему. Оставил добавление и убирание одной строки или столбца. Если не хватает всего одной строки то так удобнее добавить 
Комментарии: Замечание: если после смены размера поля через текстовое поле сразу же редактировать уровень(без выбора через верхнее меню), то двойной клик мыши не срабатывал. Дописал после проверки кода клавиши переход фокуса на панель. тогда можно сразу продолжать редактировать уровень if (e.KeyCode == Keys.Enter) {       ToolResizeLevel();       panel.Focus();//тут дописал чтобы терялся фокус } 
8 Сокобан - Редактор - Классика уровней 00:03:16
1 тест
23 чел. ★ 5 $
  На этом уроке вам нужно выбрать любых два классических уровня
и создать их в нашей программе-редакторе.

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

Редактор можно скачать здесь:
https://www.videosharp.info/data/soft/SokobanEditor.zip
9 Сокобан - Создаём свои уровни 00:08:05
1 тест
72 чел. ★ 4.9 Done
  Твоя задача - подготовить базу уровней для игры Сокобан.
Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 3 час. 00 мин. [Показать отчёт]
Научился: Терпимости 
Сложности: Самое сложно это всегда заставлять себя, например заставлять себя думать. Но только начинать трудно, а дальше уже будет нравится! 
Комментарии: После первого десятка я понял что следить за уровнем было бы интересно, и добавил свою примочку. Если обратите внимание то у меня переписывается заголовок формы(наверху указан текущий уровень), а внизу скрина я показал как это можно реализовать одной строкой. 
10 Сокобан - Игра - Интерфейс 00:43:45
1 тест
73 чел. ★ 5 Done
  Мы начинаем создание интеллектуальной игры СОКОБАН.
У нас уже есть все необходимые классы и уровни для создания полноценной игры.
На этом уроке мы создадим форму и настроим интерфейс окна лабиринта.
Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 2 час. 00 мин. [Показать отчёт]
Научился: Думать, загружать в одном Решении несколько форм, манипулировать ими. Побольше узнал о структуре, перечислении, как ими правильнее пользоваться 
Сложности: работа над ошибками 
Комментарии: много кода, который для использования копируется, а не организовывается использование того же. Но я так понял что на следующих уроках это будет оптимизировано, ждем-с...  
11 Сокобан - Игра - Управление 01:06:38
2 теста
64 чел. ★ 5 Done
  Теперь мы создадим класс логики игры Game,
используя который, мы реализуем управление человечком
курсорными клавишами клавиатуры.
А также сделаем переход на следующий уровень.
Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 4 час. 00 мин. [Показать отчёт]
Научился: изменять массив в зависимости от нажатых клавиш на клавиатуре. программа становится более массивной, и уследить за логикой становится труднее 
Сложности: увязать игру с редактором уровней 
Комментарии: я сразу написал строку if (placed == totals && level_nr==last_level_nr) last_level_nr = level_nr + 1; а вот с увязкой с редактором уровней пришлось повозиться 
12 Сокобан - Решалка - Тестер 00:59:55
1 тест
59 чел. ★ 5 Done
  На этом уроке мы напишем программу, которая будет
проверять правильность алгоритма поиска решения лабиринта.
http://www.videosharp.info/console/task/level=1178
Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 1 час. 00 мин. [Показать отчёт]
Научился: анимации в консоли 
Сложности: протестировать самостоятельно тестер 
Комментарии: пока не понимаю как сделать чтобы робот сам придумал кротчайшее решение, только вручную своим моСКом, но думаю что это чуть погодя будет, в следующих уроках. 
13 Сокобан - Решалка - Мышка 00:53:02
1 тест
58 чел. ★ 5 Done
  Мы начинаем решать задачу по решению игры Сокобан с одним ящиком.
Эта задача олимпиадного уровня на применение алгоритма поиска вширь.
Главный герой - мышка Альфа, которая желает затолкать яблочко к себе в норку.
Программу мы напишем за два урока.
На первом уроке мы создадим вспомогательную функцию MoveAlfa(),
которая подскажет мышке как попасть из одной клетки лабиринта в другую кратчайшим путём.
Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 1 час. 00 мин. [Показать отчёт]
Научился: Поиску маршрута по правилу "Поиск в ширину" 
Сложности: самому найти маршрут чтобы проверить работу робота 
Комментарии: у меня на скрине путь от Объекта до Яблока, а не до Домика как сказано в задании 
14 Сокобан - Решалка - Яблоко 00:44:23
2 теста
56 чел. ★ 5 Done
  На втором уроке мы переделываем написанный алгоритм поиска маршрута мышки.
Теперь мы разрешаем мышке толкать яблоко, и записываем все изменения их расположений.
Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 1 час. 00 мин. [Показать отчёт]
Научился: пользоваться классами 
Сложности: искать ошибки в своем коде 
Комментарии: на скрине 1. сам уровень 2. решение роботом 3. контрольное решение, предоставленное Orange(они одинаковые) 
15 Сокобан - Решалка - Оптимизация 00:11:37
1 тест
56 чел. ★ 5 Done
  На этом коротком уроке мы рассмотрим два способа оптимизации нашей программы, в результате которых работать она станет просто молниеносно!!!
Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 10 мин. [Показать отчёт]
Научился: Больше узнал о List и Dictionary 
Сложности: осознание 
Комментарии: на скрине слева старые показатели, справа новые 
16 Сокобан - Игра - Автоходы 00:42:22
1 тест
53 чел. ★ 5 Done
  Поздравляю, программа уже создана: можно играть, можно ею хвастаться.
На этом уроке мы добавим в игру автоходы, чтобы можно было
управлять нашим человечком с помощью мышки - указать, куда идти,
и даже указать, какой ящик куда нужно поставить.
Для этого нам потребуются два класса по решению лабиринта.
Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 2 час. 00 мин. [Показать отчёт]
Научился: Соединять теорию с практикой. Заставлять компьютер двигать персонажи так как хочу я 
Сложности: Поиск и работа над ошибками 
Комментарии: А где же редактор уровней? Я подшаманил и засунул это всё в один проект, чтобы из главного меню можно было редактировать и тут же и играть! 
17 Сокобан - Редактор - На двоих 00:31:57
1 тест
50 чел. ★ 5 Done
  Переделываем редактор уровней, чтобы можно было создавать лабиринты для двоих игроков.
Создаём базу из 10 новых уровней игры в Сокобан для двоих.
Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 2 час. 00 мин. [Показать отчёт]
Научился: прокачал навыки 
Сложности: работа над ошибками 
Комментарии: а можно в ресурсах хранить файл с уровнями(это я уже реализовал), а главное чтобы можно было редактировать и заново в ресурсы запихивать? 
18 Сокобан - Игра - На двоих 00:15:40
50 чел. ★ 5 Done
  Переделать игру, чтобы в неё можно было играть вдвоём на одной клавиатуре.
Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 1 час. 00 мин. [Показать отчёт]
Научился: работа над ошибками 
Сложности: самому решить поставленную задачу 
Комментарии: всё было сделано в предыдущем уроке, здесь только отшлифовали 
19 Сокобан - Телефон - TCP/IP протокол 00:47:44
1 тест
61 чел. ★ 5 Done
  На этом видеоуроке мы создадим три класса, которые удобно
использовать для передачи данных между двумя компьютерами.
Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 2 час. 00 мин. [Показать отчёт]
Научился: работать с сетевыми технологиями TCP/IP через C#, передавать данные между компьютерами, делать отказоустойчивую связь. 
Сложности: работа с различными типами данных 
Комментарии: слева на скрине сервер, справа клиент. данные совпадают 
20 Сокобан - Игра - На двоих по сети 00:56:59
1 тест
48 чел. ★ 5 Done
  На этом уроке мы наконец-таки сделаем сетевую версию программы Sokoban для двоих.
Мы будем использовать телефонный класс Phone с прошлого урока.

Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 2 час. 00 мин. [Показать отчёт]
Научился: Синхронизации двух программ, передачи нужной мне информации, логике при передачи(потере) информации 
Сложности: работа над ошибками синхронизации 
Комментарии: правильно было сказано, чтобы отдавать пользователям над этой программой ещё работать и работать, много багов нужно повыгребать 
21 Сокобан - Завершение 00:37:44
45 чел. ★ 5 Done
  Игра уже написана, но всегда можно сделать чуть-чуть лучше.
На этом уроке мы объединим оба варианта игры в одну программу
и загрузим файл с уровнями в ресурсы программы.
Теперь в одном ехешнике будет сразу всё!
Это финиш!!!
Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 1 час. 00 мин. [Показать отчёт]
Научился: продумывать все возможные варианты 
Сложности: соединить всё воедино 
Комментарии: мои доработки: 1. я оставил возможность корректировать уровни(SokobanEditor) 2. если уровни были скорректированы, то они сохраняются в файл, и в начале проверяется наличие этого(этих) файлов 3. добавил в Мои документы на компьютере чтобы создавался файл, в котором хранится пароль от последнего пройденного уровня, и в начале проверяется есть ли файл, пароль, от этого дается возможность пропускать уровни, которые были пройдены ранее (у меня их 63 :-) ) ну и для новичков по поводу доработки - ВОЗМОЖНОСТИ БЕЗГРАНИЧНЫ,  они ОГРАНИЧЕНЫ ЛИШЬ ВАШЕЙ ФАНТАЗИЕЙ! 
22 ФИНАЛЬНЫЙ урок. Видео-обзор проекта Сокобан 00:23:23
32 чел. ★ 5 Done
  Задание:
Записать видеообзор игры СОКОБАН.

Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 1 час. 00 мин. [Показать отчёт]
Научился: Всем здравствуйте! При разработке моей игры CounterStrike Sokoban я научился многим вещам, таким как работать с панелями, создавать их программно, размещение картинок, загрузка данных из файлов и ресурсов, динамически изменять картинки в связи с заданными условиями. Научился работать с классами, подклассами, с приватными и глобальными переменными, в одном проекте использовать несколько форм одновременно. Узнал о таком методе поиска маршрута как "Поиск в ширину" и смог его реализовать в своей игре для увеличения комфортности игры. Научился передавать данными между компьютерами и завязывать всё это в одной форме, т.е. два человека на различных компьютерах управляют одной и той же формой. Мне как программисту этот видеокурс принес много нового и, порой, неожиданного в изучении возможностей языка C#. При написании других проектов ловлю себя на мысли, что вспоминаю как это было реализовано в CounterStrike Sokoban и понимаю что это возможно - это раз, что это не сложно - это два, и всё это реально можно сделать, главное применить капельку фантазии, а базу Евгений Витольдович уже заложил. P.S. для новичков по поводу доработок - ВОЗМОЖНОСТИ БЕЗГРАНИЧНЫ,  они ОГРАНИЧЕНЫ ЛИШЬ ВАШЕЙ ФАНТАЗИЕЙ! Ваяйте, создавайте, не пугайтесь трудностей, они лишь у вас в голове! 
Сложности: Учиться с Евгением Витольдовичем легко и быстро, главное не гоните лошадей, одно-два занятия в день легко усваиваются, если больше - можете пропустить что-то важное! 
Комментарии: В видео не сказал ещё что редактор уровней для одиночной и для многопользовательской игры разные уровни редактирует, разные создает на диске, и если они есть то тоже никак не пересекаются с одиночной игрой 
Видеообзор: https://youtu.be/NSwo5RVoHUI
23 VIP. Бот для игры БАЛДА 01:22:57
15 чел. ★ 5 $
  Используя текстовый файл из 27400 слов
создаём рекурсивный алгоритм подбора
слов для популярной игры Балда.
  Итого:   23 видеоурока 13 час. 51 мин.
14 тестов
11 чел. ★ 4.98  
  Финалисты:   LINKI,   Новопашин Владимир,   Tekashnik,   Алексей В.,   zhikharevav,   Evgenii Kudriavtcev,   chokayes,   Дмитрий,   Максим Лапшинов,   Domination Agenda,   Max .

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





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

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

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

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


Научился: Продолжаю "закрывать хвосты". Финальный видеообзор замечательной игры "Сокобан", написанной 3 года назад. В игре было реализовано множество очень полезных фишек вроде поиска пути (можно указать клетку, на которую человечек должен прийти, и он самостоятельно добирается (7-я секунда обзора)). Были реализованы режимы игры на 1 и 2 человек, а также отдельно редакторы уровней для них. Отдельно был написан тестер алгоритма поиска пути и проведена его оптимизация.
Трудности: Один из самых полезных по насыщенности и самый глобальный на то время курс. Все время хочу его перепройти и разобрать на сниппеты множество фишек (поиск пути, несколько слоев двумерной карты, управление юнитом мышкой, сетевая игра и т.п.), но 14 часов чистого видео - это требует серьезного подхода и затрат времени и усилий.



Научился: Записывать видео обзор по своей программе
Трудности: всё правильно сказать и показать :)
замечаний нет