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

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

Демо игры

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

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

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

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

# Название видеоурока Решило Рейтинг Доступ
1 C# чего начать программировать 00:07:44 165 чел. ★ 4.9 Free
2 Картинка с секретом 00:53:40 1150 чел. ★ 4.9 Done
  Отчёт отправил: 7276. Ильшат Решено за 1 час. 35 мин. [Показать отчёт]
Научился: Свойствам Anchor, BackGroundImageLayout у объектов на форме, создавать иконку приложения. 
Сложности: Подобрать 5 картинок и подвести их к общему размеру. 
Комментарии: Все отлично) 
3 Лабиринт 2D - меню 00:29:13 946 чел. ★ 4.9 Done
  Отчёт отправил: 7276. Ильшат Решено за 1 час. 10 мин. [Показать отчёт]
Научился: 1)Создавать свой класс 2)Воспроизводить звуковые файлы 3)Закрывать форму с помощью Close() 
Сложности: Подобрать 4 звуковых файла из папки Media) 
Комментарии: Статические классы, C# удивляет) 
4 Лабиринт 2D - игра 00:47:49 670 чел. ★ 4.9 Done
  Отчёт отправил: 7276. Ильшат Решено за 2 час. 10 мин. [Показать отчёт]
Научился: 1) Cursor.Position; 2) Вызов форм, DialogResult; 3) Событие MouseEnter.  
Сложности: Во время создания третьего уровня, когда добавлял/удалял "ключи", "двери" и "стены" появлялись висячие указатели на несуществующие функции-обработчики. 
Комментарии: Понравилась идея использовать label для препятствий) 
5 Игра Быстрощёлк 00:25:26 707 чел. ★ 4.8 Done
  Отчёт отправил: 7276. Ильшат Решено за 40 мин. [Показать отчёт]
Научился: 1) Замерять время; 2) Познакомился с событием MouseDown. 
Сложности: Побить ваш рекорд 14 кликов в секунду:D На скриншоте показан результат "щелканья" двумя руками. 
Комментарии: Все отлично) 
6 Бот для Быстрощёлка 00:25:35 598 чел. ★ 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 475 чел. ★ 4.9 Done
  Отчёт отправил: 7276. Ильшат Решено за 2 час. 10 мин. [Показать отчёт]
Научился: Повторил работу с панелями, pictureBox, загрузкой ресурсов. Понравился способ установки видимости необходимой картинки через проверку условия. Например, picture_rock.Visible = choice == Choice.rock; 
Сложности: Все хорошо поясняется, проблем не было. 
Комментарии: Сначала я написал версию по видео уроку, поиграл, оценил. Здорово, но это скорее игра на реакцию, а не привычная "камень-ножницы-бумага". Так как игрок может видеть примерный выбор компьютера, то он имеет возможность нечестно победить. Поэтому я решил слегка изменить начальную версию программы: убрал таймер и организовал принятие решения компьютера в момент клика по одной из трех картинок. Во время модификации программы я утомился работать со строковыми представлениями картинок и режимов игры, добавил отдельный класс GameLogic. В тот момент задумался, как можно усложнить игру? Ответ пришел быстро - разные варианты генерации решений компьютером. Например, компьютер будет учитывать предыдущие ходы игрока, сохранять их в коллекцию и далее по-хитрому медитируя пытаться угадать следующий шаг. Чтобы создать задел для разных версий генераторов, использовал полиформизм, добавил интерфейс IChoiceGenerable и реализовал его в классе RandomChoiceGenerator, который (как в видео уроке) рандомно принимает решение в полуоткрытом интервале [1, 4). Версию с AI пока что делать не стал, оставил на будущее) 
8 ФИНАЛЬНЫЙ УРОК 00:01:51 431 чел. ★ 4.8 Done
  Отчёт отправил: 7276. Ильшат Решено за 20 мин. [Показать отчёт]
Научился: Вспомнил как начал заниматься на сайте. 
Сложности: Написать отзыв. 
Комментарии: Курс Наноигры - замечательный первый шаг в изучении для начинающих программистов C#. Особенность уроков в том, что изначально ставится определенная задача и уже к концу урока мы получаем законченное работающее приложение. То есть, обучение идет от практики, без начальной теории, которая возможно отпугивает большинство новичков. Теории именно столько, сколько нужно для решения задачи. Да, при таком подходе может возникнуть проблема - ученик обучается вширь - немного знаний из этой области, немного из другой, а фундаментального понимания нет. Но оно и не нужно на первой поре. Лучше сначала научиться решать простые задачи, почувствовать уверенность в с себе. Конечно, человеку с нуля будет достаточно сложно сразу разобраться с происходящим, это словно попасть в неизвестную страну, где говорят на неведомом тебе языке. Но здесь действует принцип - количество переходит в качество. Или делай как я. Новичку достаточно просто переписать код Евгений Витольдовича, порадоваться его компиляции и в результате, работающему приложению. Затем можно попробовать изменить текст надписей, цвет, фон. А дальше, совместив знания, полученные в разделе "Консоль" можно пробовать добавлять что-то от себя. В целом, я советую новичкам начать обучение на проекте с курса Наноигры, попутно решая задачи из консоли. Успехов всем!) Хужахметов Ильшат 
9 VIP. Устный счёт 00:46:39 328 чел. ★ 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 час. 45 мин. 47 чел. ★ 4.88  
  Финалисты:   Артём,   Михаил Ермишин,   Иван Воронин,   FireWolf,   Tekashnik,   Елена,   LINKI,   Константин,   Александр Р.,   kirilljgha,   Сергей Стефаненко,   konstantin,   Новопашин Владимир,   Кирилл Шмойлов,   Игорь,   Permitin Alexey,   Алексей|BrisK|Кривицкий,   Роман,   Сергей,   Frank,   Павел,   Никита,   DimanDOS,   Катерина,   Сарапульцев Константин,   Петя,   Сергей,   zhikharevav,   Alpinist573,   DimkaKMS,   Protos,   Никита,   Наталья,   Морозов Юрий Александрович,   Иван,   Neverwinter 2,   Скозложоп,   Андрей Шевченко,   zmejchik,   Николай Денисов,   Олег Лопухинский,   jin,   Serpimolot,   Алексей В.,   Дмитрий,   Алексей Хонин,   gorynych .

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




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

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

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

Ты в любой момент сможешь отписаться от рассылки.
Сайт отличный. Все легко усваиваеться. Буду продолжать здесь заниматься ведь все курсы интересны. СЛедующим буду проходить Демо-софт. Со всеми наилучшими пожеланиями Виталий Анатолиевич
Спасибо вам за курс! Создание игр - это моя личная мотивация и цель в освоении программирования. Благодаря таким, вроде бы очень простым, урокам легко осваивается язык, работа в среде разработки (VS) и приходит понимание к общему подходу в решении задач. Только игр было всего 5, а не 10. Хочу еще =) С уважением, Дерябин Виктор