Курс программирования

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

Демо игры

Несколько простых игрушек для ознакомления с проектом.
Каждая игровая программа пишется с нуля.
Доступ к урокам последовательный.

Во время прохождения курса вы самостоятельно
напишете несколько игровых программ.

Объём: 8 видеоуроков.

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

# Название видеоурока Решило Рейтинг Доступ
1 Вступительное слово 00:20:15 1590 чел. ★ 4.7 Done
  Отчёт отправил: 7276. Ильшат Решено за 42 мин. [Показать отчёт]
Научился: Мигрировать проект с 2013 на 2015 студию. 
Сложности: Сложностей не было. Ожидал, что будут проблемы с миграцией последней программы, но все прошло успешно) 
Комментарии: Небольшая игра в жанре runner, для windows phone 8.1 на C++/DirectX11. Ожидание от видеокурсов - познакомиться с C#, получить/отточить навыки программирования. 
2 Картинка с секретом 00:53:40 906 чел. ★ 4.9 Done
  Отчёт отправил: 7276. Ильшат Решено за 1 час. 35 мин. [Показать отчёт]
Научился: Свойствам Anchor, BackGroundImageLayout у объектов на форме, создавать иконку приложения. 
Сложности: Подобрать 5 картинок и подвести их к общему размеру. 
Комментарии: Все отлично) 
3 Лабиринт 2D - меню 00:29:13 759 чел. ★ 4.9 Done
  Отчёт отправил: 7276. Ильшат Решено за 1 час. 10 мин. [Показать отчёт]
Научился: 1)Создавать свой класс 2)Воспроизводить звуковые файлы 3)Закрывать форму с помощью Close() 
Сложности: Подобрать 4 звуковых файла из папки Media) 
Комментарии: Статические классы, C# удивляет) 
4 Лабиринт 2D - игра 00:47:49 538 чел. ★ 4.9 Done
  Отчёт отправил: 7276. Ильшат Решено за 2 час. 10 мин. [Показать отчёт]
Научился: 1) Cursor.Position; 2) Вызов форм, DialogResult; 3) Событие MouseEnter.  
Сложности: Во время создания третьего уровня, когда добавлял/удалял "ключи", "двери" и "стены" появлялись висячие указатели на несуществующие функции-обработчики. 
Комментарии: Понравилась идея использовать label для препятствий) 
5 Игра Быстрощёлк 00:25:26 590 чел. ★ 4.8 Done
  Отчёт отправил: 7276. Ильшат Решено за 40 мин. [Показать отчёт]
Научился: 1) Замерять время; 2) Познакомился с событием MouseDown. 
Сложности: Побить ваш рекорд 14 кликов в секунду:D На скриншоте показан результат "щелканья" двумя руками. 
Комментарии: Все отлично) 
6 Бот для Быстрощёлка 00:25:35 492 чел. ★ 4.9 Done
  Отчёт отправил: 7276. Ильшат Решено за 45 мин. [Показать отчёт]
Научился: 1) Работе с компонентом TabelLayoutPanel; 2) Вызывать функции WinAPI из кода программы C# 
Сложности: track_count_Scroll(null, null) и track_time_Scroll(null, null). Понимаю, что в этих функциях мы не обрабатываем аргументы, но передавать null было неловко) 
Комментарии: Интересный урок, познакомился с компонентом TabelLayoutPanel, вызовом функции WinAPI из кода программы. Результат впечатляет, у меня есть свой бот) 
7 Камень ножницы бумага 00:47:10 385 чел. ★ 4.9 Done
  Отчёт отправил: 7276. Ильшат Решено за 2 час. 10 мин. [Показать отчёт]
Научился: Повторил работу с панелями, pictureBox, загрузкой ресурсов. Понравился способ установки видимости необходимой картинки через проверку условия. Например, picture_rock.Visible = choice == Choice.rock; 
Сложности: Все хорошо поясняется, проблем не было. 
Комментарии: Сначала я написал версию по видео уроку, поиграл, оценил. Здорово, но это скорее игра на реакцию, а не привычная "камень-ножницы-бумага". Так как игрок может видеть примерный выбор компьютера, то он имеет возможность нечестно победить. Поэтому я решил слегка изменить начальную версию программы: убрал таймер и организовал принятие решения компьютера в момент клика по одной из трех картинок. Во время модификации программы я утомился работать со строковыми представлениями картинок и режимов игры, добавил отдельный класс GameLogic. В тот момент задумался, как можно усложнить игру? Ответ пришел быстро - разные варианты генерации решений компьютером. Например, компьютер будет учитывать предыдущие ходы игрока, сохранять их в коллекцию и далее по-хитрому медитируя пытаться угадать следующий шаг. Чтобы создать задел для разных версий генераторов, использовал полиформизм, добавил интерфейс IChoiceGenerable и реализовал его в классе RandomChoiceGenerator, который (как в видео уроке) рандомно принимает решение в полуоткрытом интервале [1, 4). Версию с AI пока что делать не стал, оставил на будущее) 
8 ФИНАЛЬНЫЙ УРОК 00:01:51 349 чел. ★ 4.8 Done
  Отчёт отправил: 7276. Ильшат Решено за 20 мин. [Показать отчёт]
Научился: Вспомнил как начал заниматься на сайте. 
Сложности: Написать отзыв. 
Комментарии: Курс Наноигры - замечательный первый шаг в изучении для начинающих программистов C#. Особенность уроков в том, что изначально ставится определенная задача и уже к концу урока мы получаем законченное работающее приложение. То есть, обучение идет от практики, без начальной теории, которая возможно отпугивает большинство новичков. Теории именно столько, сколько нужно для решения задачи. Да, при таком подходе может возникнуть проблема - ученик обучается вширь - немного знаний из этой области, немного из другой, а фундаментального понимания нет. Но оно и не нужно на первой поре. Лучше сначала научиться решать простые задачи, почувствовать уверенность в с себе. Конечно, человеку с нуля будет достаточно сложно сразу разобраться с происходящим, это словно попасть в неизвестную страну, где говорят на неведомом тебе языке. Но здесь действует принцип - количество переходит в качество. Или делай как я. Новичку достаточно просто переписать код Евгений Витольдовича, порадоваться его компиляции и в результате, работающему приложению. Затем можно попробовать изменить текст надписей, цвет, фон. А дальше, совместив знания, полученные в разделе "Консоль" можно пробовать добавлять что-то от себя. В целом, я советую новичкам начать обучение на проекте с курса Наноигры, попутно решая задачи из консоли. Успехов всем!) Хужахметов Ильшат 
9 VIP. Устный счёт 00:46:39 260 чел. ★ 4.9 Done
  Отчёт отправил: 7276. Ильшат Решено за 3 час. 15 мин. [Показать отчёт]
Научился: То что высота компонента TextBox зависит только от размера выводимого шрифта. 
Сложности: Проблем как таковых по уроку не было, я их сам себе создал, когда решил добавить абстракцию выбранной операции(сложение, вычитание и т.д.) Достаточно долгое время работал над интерфейсом программы. 
Комментарии: В уроке понравился способ генерации чисел для операции деления, где a = random.Next(1, 10); b = random.Next(1, 10); first_arg = a * b; second_arg = b; В итоге получаем, что результат деления всегда получается целый. От себя добавил, хм, много чего. Изменил интерфейс, освежил в памяти свои давние знания по GroupBox, RadioButton. Добавил операцию "остаток от деления". Заменил текстовое поле диапазона генерируемых чисел на три RadioButton (уровни сложности). Добавил таймер обратного отсчета, дифференцировал результат сдачи теста по оценкам (учитывая затраченное время на прохождение). Кроме того, при запуске теста "наглым образом" уменьшаю высоту окна, чтобы скрыть настройки и добавить сверху информационные поля (см. на скриншотах). Добавил кнопку отмены теста, поработал с выводом MessageBox при различных результатах работы программы: тест успешно пройден на оценки 5, 4, 3, тест не пройден (по ошибке), тест не пройден (время истекло). В целом, чудненько, работа с интерфейсом затягивает, хочется добавить что-нибудь эдакое) По коду. В принципе, модификаций не очень много. Решил поиграться, выделить операцию в отдельную абстракцию - BinaryFunction. Сделал ее в виде абстрактного класса, от которого наследовал классы Plus, Minus, Mult, Div, Modulo. Для управления всем этим добром, и с учетом необходимости постоянной генерации случайных аргументов функции, добавил "драйвер" - класс BinaryCalculation. Этот класс создает нужный экземпляр класса BinaryFunction в момент нажатия на кнопку "Начать тест" и затем каждый раз обращается за результатом работы функции в момент нажатия пользователем кнопки Enter на поле ввода ответа. Хотел абстрагироваться еще дальше, добавить класс UnaryFunction (например для вычисления факториала), потом TernaryFunction, а потом вообще замахнулся на вычисление сложных, вложенных выражений. Задумался, а зачем? Программа создается с целью проверки устного счета, поэтому остановился на одном классе BinaryFunction. В целом, здорово позанимался, я доволен. Спасибо, Евгений Витольдович) 
  Итого:   9 видеоуроков общей продолжительностью 4 час. 57 мин. 192 чел. ★ 4.86  
  Финалисты:   Ярина,   данила,   ToxaSM,   Валерий,   Александр,   Александр,   Farid,   Ivan,   Никита,   Оля,   Мурад,   Cyril_E,   Антон,   kailyfux,   Елена,   lainys,   Михаил,   САНЯ,   Карен Мурадян,   Ильющенко Иван Иванович,   Сергей,   Санек,   Игорь,   Руслан,   Иван,   Марина,   Вадим,   Edgard Loyter,   Ljudmila,   Иван Николаевич,   Арсентий,   Руслан Агафонов,   Антон,   Андрей,   Иван,   Александр Акилин,   Константин,   Роман,   Anton,   ivan,   TheRuEoniSS,   Сергей,   Александр Премьер,   Alexander Sidorov,   Nurbek,   Mx-RoN,   Сергей,   Олег,   Artem,   Alexandr,   Сергей Витальевич,   Дмитрий Че,   Сергей,   Катерина,   Никита,   Евгений,   Владимир,   Александр,   Дмитрий,   Oleksandr,   Алексей,   Pavel,   Павел Журавлевич,   Антон Лазарец,   Светлана Горячева,   Дмитрий Мерцалов,   cruim,   Кирилл,   Андрей,   мак дак,   Olly,   puritycg,   Андрей Латыш,   Степан Поперечный,   Svaytoslav,   Виктор, Лысых,   Платон,   Александр Беспалов,   Влад,   Denis,   Илья,   Виктор,   Borislav,   f0r3st3r,   Степан Фендьо,   Даниил,   Сергей Сергеевич,   Lik_Kirill,   Anton Sozykin,   Владимир Борисенко,   Мариша ,   Саша,   Dmitriy Varyushkin,   алексей,   kristalic,   Фомичева Наталья,   Родион,   Игорь,   екатерина,   Согрин Алексей,   Алексей,   Александр Широков,   Vlad Yakovlev,   Сергей,   Андрей ,   mirbek,   Кузьмин Кирилл,   Мария,   Alexander,   Виталий,   Влад,   Валентин,   annaka,   Влад,   Артём,   Андрей ,   Сергей Владимирович,   Александр,   Юрий ,   Владимир,   Сергей Лузум,   Ильшат,   FerKoner,   Морозов Юрий Александрович,   Александр Львович,   devnull,   Sergey Shumskiy,   Permitin Alexey,   Орехов Эдуард,   Дмитрий Артюхин,   Frank,   sorik,   inward,   Булат,   Pavel_Novosib,   Андрей,   Сергій,   Иван Алексеевич,   Serg,   Алексей|BrisK|Кривицкий,   sergey,   Александр Р.,   Наталья,   Евгений,   zhikharevav,   Ender,   Dima,   Ольга,   Дмитрий,   Hozy,   Сергей,   Вадим Григорьев,   Богдан Федоренко,   nik,   Viktor,   lyudo,   Кирилл Лебедев,   Alex,   Minergimn,   Новопашин Владимир,   Сергей,   xrt,   Екатерина,   Виталий,   atomicpel,   Алексей В.,   Илья Витюк,   sergeyvbo,   Александр Б.,   Сергей Соколов,   Сергей Зулкарнаев,   Filip Ivashov,   Argona,   Алексей Хонин,   Кирилл,   Петя,   Amerigo,   Олег,   Игорь,   Олег Лопухинский,   sawezx,   DimkaKMS,   Константин,   Oleg Didok,   Иван Воронин,   Сергей Колупаев,   Игорь Алексеенко,   Sergio,   Сергей Аникин,   Станислав,   Polsovatel,   bazvas .

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




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

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

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

Ты в любой момент сможешь отписаться от рассылки.
Научился: Провел итог выполненной работе по курсу.
Трудности: Ничего.
Отзыв: Очень нравится обучаться на проекте, автор проекта так держать! Благодаря проекту заставляешь себя работать и изучать язык C#. Понравился видеокурс про камень ножницы бумагу. Следующий курс: Предполагаю начать проходить курс НаноШахматы. Константин Ильминский
Научился: ----
Всем привет, меня зовут Алексей Есипов. Я считаю это отличный ресурс для изучения языка. Очень нравится сама методика изучения, предложенная на данном сайте, такие мелочи вроде "сначала выполни задание, потом преступай к следующему" делают обучение настоящим, ведь так часто кажется, что все понятно, но когда приступаешь к исполнению, понимаешь, что все не так просто. Евгений Витольдович объясняет все доходчиво, и если вы или ваш знакомый хотите изучить С#, я не думаю, что вам удастся найти ресурс по лучше.