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:02:13
1 тест
109 чел. ★ 4.8 Done
  Мы начинаем создание легендарной игровой программы
"Сапёр" на языке программирования Java.

Отчёт отправил: 986. Антон Лазарец Выполнено за 8 мин. [Показать отчёт]
Научился:      
2 FREE Простое окно 00:03:02
96 чел. ★ 4.9 Done
  На этом уроке мы начинаем новый проект
и создадим JFrame приложение.
Отчёт отправил: 986. Антон Лазарец Выполнено за 6 мин. [Показать отчёт]
Научился: Пока ничё сложного 
3 Закрытие на выходе 00:03:00
91 чел. ★ 4.9 Done
  На этом уроке мы настроим JFrame приложения.
Для этого пропишем необходимые параметры.

Отчёт отправил: 986. Антон Лазарец Выполнено за 17 мин. [Показать отчёт]
Научился: Почитал документацию по init block, primary и secondary конструкторы. Пока ничего военного 
4 Полёт над классом 00:03:53
89 чел. ★ 4.8 Done
  На этом слайде мы обсудим все поля и методы основного класса нашей запускаемой игры JavaSweeper, который наследуется от JFrame
Отчёт отправил: 986. Антон Лазарец Выполнено за 9 мин. [Показать отчёт]
Научился: Тут ничему не научился, все впереди 
5 Пустая панель 00:02:33
88 чел. ★ 4.9 Done
  На этом слайде мы добавим на нашу форму панель, установим ее размер и разместим ее по центру экрана
Отчёт отправил: 986. Антон Лазарец Выполнено за 6 мин. [Показать отчёт]
Научился: почитал доку к методу pack(). узнал про особенности метода setLocationRelativeTo() 
6 Раздельная инициализация 00:02:23
88 чел. ★ 4.9 Done
  На этом слайде мы займемся рефакторингом. Мы не будем добавлять новой функциональности, а просто красиво оформим то, что уже есть.
Отчёт отправил: 986. Антон Лазарец Выполнено за 16 мин. [Показать отчёт]
Научился: Узнал как создавать статические методы на уровне класса 
7 Метод рисования 00:01:59
88 чел. ★ 4.9 Done
  На этом слайде мы наконец-то начнем рисовать. Создадим Paint-компонент для отображения рисунков на нашей панели и на форме.
Отчёт отправил: 986. Антон Лазарец Выполнено за 4 мин. [Показать отчёт]
Научился: Научился создавать анонимные классы 
8 Импорт картинок 00:01:22
86 чел. ★ 4.9 Done
  На этом слайде мы добавим в наш проект картинки, которые потом будем показывать на панели во время игры.
Отчёт отправил: 986. Антон Лазарец Выполнено за 2 мин. [Показать отчёт]
Научился: Самый сложный урок =3 
9 Загрузка и отображение 00:02:13
86 чел. ★ 4.9 Done
  На этом слайде мы выведем картинку на панель
Отчёт отправил: 986. Антон Лазарец Выполнено за 44 мин. [Показать отчёт]
Научился: Узнал, что при наличии нескольких модулей в проекте для доступа к ресурсу нужно указывать название модуля в начале пути 
Сложности: понять, почему картинка не подгружается. решение описано в блоке выше 
10 Угловая бомба 00:01:31
85 чел. ★ 4.9 Done
  На этом слайде мы добавим еще пару картинок на нашу форму.
Отчёт отправил: 986. Антон Лазарец Выполнено за 9 мин. [Показать отчёт]
Научился: Влюбился в string template) 
11 Константные размеры 00:02:42
85 чел. ★ 4.9 Done
  На этом слайде мы добавим константы и немножко порефакторим.
Отчёт отправил: 986. Антон Лазарец Выполнено за 29 мин. [Показать отчёт]
Научился: почти привык к объекту-компаньону. 
12 Перечисление кубиков 00:03:42
85 чел. ★ 4.9 Done
  На этом слайде мы создадим перечисление Box
Отчёт отправил: 986. Антон Лазарец Выполнено за 6 мин. [Показать отчёт]
Научился: Интересная теория про одинаковую длину имен констант. боюсь шоб за такое по рукам не надавали. поэтому сделал по канонам =3 
13 Первый цикл 00:01:59
85 чел. ★ 4.9 Done
  На этом слайде мы выведем все картинки на форме
Отчёт отправил: 986. Антон Лазарец Выполнено за 10 мин. [Показать отчёт]
Научился: Нашел метод withIndex на объекте массиве позволяющий итерировать по значению и индексу. пришлось очень кстати 
14 Картинка в кубике 00:03:45
84 чел. ★ 4.9 Done
  На этом слайде мы поместим картинку в каждый экземпляр перечисления Box.

Отчёт отправил: 986. Антон Лазарец Выполнено за 7 мин. [Показать отчёт]
Научился: withIndex из прошлого задания убрал, хорошая штука, но ordinal от enum решает проблемы, чет занесло не в ту степь =3 
15 Источник ресурсов 00:01:53
79 чел. ★ 4.9 Done
  На этом слайде мы сделаем загрузку картинок через систему ресурсов в языке Java
Отчёт отправил: 986. Антон Лазарец Выполнено за 14 мин. [Показать отчёт]
Научился: Ничего нового. получение класса текущего объекта чуть по другому выглядит, а так все понятно 
16 Запускаемый jархив 00:02:55
73 чел. ★ 5 Done
  На этом слайде мы создадим запускаемый JAR-архив для нашей программы

Примечание.
При попытке запуска jar на линуксе появляется сообщение "is not marked as executable".
Необходимо запускать архив из командной строки:
  java -jar JavaSweeper.jar
Либо разрешить исполнение этого файла, чтобы запускать по клику мышкой:
 chmod +x JavaSweeper.jar

Отчёт отправил: 986. Антон Лазарец Выполнено за 39 мин. [Показать отчёт]
Научился: ничего капитально нового) 
Сложности: понять почему джарка не запускается от дабл клика. после получаса гугления и перепробывания нескольких способов решения - забил и запустил через консольку 
17 Карта классных сокровищ 00:04:48
70 чел. ★ 4.9 Done
  На этом слайде мы разберем UML-схему нашего проекта
Отчёт отправил: 986. Антон Лазарец Выполнено за 18 мин. [Показать отчёт]
Научился: даже не знаю, вспомнил юмл схемы, наверно можно так сказать 
18 Наши координаты 00:03:24
65 чел. ★ 5 Done
  На этом слайде мы создадим класс Coord и задействуем его в нашей программе
Отчёт отправил: 986. Антон Лазарец Выполнено за 4 мин. [Показать отчёт]
Научился: Все больше привыкаю к новому синтаксису 
19 Статичная граница 00:03:12
65 чел. ★ 4.9 Done
  На этом слайде мы создадим класс Ranges, который будет использоваться во многих классах нашего проекта и позволит задавать глобальные параметры и перебор всех координат.
Отчёт отправил: 986. Антон Лазарец Выполнено за 3 мин. [Показать отчёт]
Научился: уже готов писать Ranges 
20 Установка размеров 00:04:22
64 чел. ★ 4.9 Done
  На этом слайде мы создадим класс Range с двумя статичными методами для установки и получения размеров нашего поля.
Отчёт отправил: 986. Антон Лазарец Выполнено за 22 мин. [Показать отчёт]
Научился: Узнал о новой стороне объявления object позволяющей создавать не только анонимные классы но также singleton объекты 
21 Полный список 00:04:28
60 чел. ★ 5 Done
  На этом слайде мы добавим в класс Range список всех координат нашего поля и будем его использовать для перебора всех клеток
Отчёт отправил: 986. Антон Лазарец Выполнено за 17 мин. [Показать отчёт]
Научился: Попрактиковался в использовании рэнжей 
22 Радуга картинок 00:03:18
57 чел. ★ 4.9 Done
  На этом слайде мы добавим иконку нашей программе и немножко пошалим с отображением картинок на экране
Отчёт отправил: 986. Антон Лазарец Выполнено за 3 мин. [Показать отчёт]
Научился: нашел уместное применение функции also 
23 Фасадный класс 00:02:05
57 чел. ★ 4.9 Done
  На этом слайде мы начнем создавать фасадный класс Game и напишем первые два метода этого класса

Отчёт отправил: 986. Антон Лазарец Выполнено за 4 мин. [Показать отчёт]
Научился: Насколько знаю, фасад предоставляет удобный и понятный интерфейс для использование. и не требует от клиента знаний о внутреннем устройстве. что то вроде верхнего слоя приложения. могу ошибаться 
24 Игровая координата 00:04:07
57 чел. ★ 4.9 Done
  На этом слайде мы создадим класс Game и реализуем в нем конструктор, а также метод getBox(), который по заданным координатам возвращает, что должно быть в указанной клетке нашего поля.
Отчёт отправил: 986. Антон Лазарец Выполнено за 6 мин. [Показать отчёт]
Научился: ээм. не знаю. с рефакторингом ближе познакомился 
25 Матрица мира 00:04:32
56 чел. ★ 4.9 Done
  На этом слайде мы создадим класс Matrix для хранения всех элементов нашего игрового поля
Отчёт отправил: 986. Антон Лазарец Выполнено за 31 мин. [Показать отчёт]
Научился: Научился делать мультидименшнл массивы. чуть по другому выглядит (имхо уродливее) но на форумах писали что может что то с этим сделают 
26 За гранью видимого 00:04:49
55 чел. ★ 4.9 Done
  На этом слайде мы добавим в класс Matrix два метода - геттер и сеттер для получения и установки полей нашей игры
Отчёт отправил: 986. Антон Лазарец Выполнено за 52 мин. [Показать отчёт]
Научился: попользовался оператором return if и Optional классом. возвращать null в kotlin не комильфо) всё в нём говорит так не делать. поэтому выкрутился таким способом. там конечно есть null, но всё заточено под null safe, поэтому решил не нарушать идеологию 
27 Бомбанутый класс 00:02:55
53 чел. ★ 5 Done
  На этом слайде мы поговорим о классе Bomb, который будет использоваться для хранения нижнего слоя нашего поля, где находятся бомбы и числа вокруг них
Отчёт отправил: 986. Антон Лазарец Выполнено за 15 мин. [Показать отчёт]
Научился: насколько я понял. класс bomb будет инкапсулировать в себе нижний слой карты и механизмы для заполнения данного слоя. а для пользователя предоставлять интерфейс взаимодействия с нижним слоев 
28 Тестовая бомба 00:05:11
54 чел. ★ 5 Done
  На этом слайде мы начнем создавать класс Bomb
Отчёт отправил: 986. Антон Лазарец Выполнено за 13 мин. [Показать отчёт]
Научился: пока все понятно. названия класса странное немного, имхо что то вроде bottomlayer было бы понятнее. но как говорят на вкус и цвет... =3 
29 Случайные бомборазмещения 00:04:35
54 чел. ★ 5 Done
  На этом слайде мы разместим бомбы в случайных местах на нашей карте
Отчёт отправил: 986. Антон Лазарец Выполнено за 8 мин. [Показать отчёт]
Научился: ничё нового, запилили генерацию бомб случайную, всё просто 
30 Сравнение координат 00:03:09
53 чел. ★ 5 Done
  На этом слайде мы исправим несколько ошибок и добавим в класс Coord метод для сравнения двух координат
Отчёт отправил: 986. Антон Лазарец Выполнено за 12 мин. [Показать отчёт]
Научился: вроде в equals проверка на null вначале должна быть 
31 Ограда из единиц 00:06:29
53 чел. ★ 4.9 Done
  На этом слайде мы научимся проставлять единицы вокруг каждой бомбы
Отчёт отправил: 986. Антон Лазарец Выполнено за 1 час. 4 мин. [Показать отчёт]
Научился: научился выводить цифры вокруг бомб. переписал алгоритм под java 8 stream api 
32 Следующая цифра 00:04:16
51 чел. ★ 5 Done
  На этом слайде мы будем увеличивать цифры вокруг каждой новой размещенной бомбы
Отчёт отправил: 986. Антон Лазарец Выполнено за 8 мин. [Показать отчёт]
Научился: научился расставлять цифры больше единицы вокруг бомб 
33 Дважды в одну воронку 00:05:52
49 чел. ★ 5 Done
  На этом слайде мы исключим попадание двух бомб в одну воронку
Отчёт отправил: 986. Антон Лазарец Выполнено за 8 мин. [Показать отчёт]
Научился: начинает вырисовываться что-то рабочее) не может не радовать 
34 Флаг над классом 00:09:18
48 чел. ★ 5 Done
  На этом слайде мы перейдем к верхнему уровню нашей абстракции - классу Flag.
Отчёт отправил: 986. Антон Лазарец Выполнено за 12 мин. [Показать отчёт]
Научился: выбрал метод setOpenedToClosedBombBox. если правильно понял его назначение. то после окончания игры не в пользу игрока на карте открываются все бомбы 
35 Королевская траншея 00:05:02
48 чел. ★ 5 Done
  На этом слайде мы создадим методы start() и get() в класс Flag.
Отчёт отправил: 986. Антон Лазарец Выполнено за 9 мин. [Показать отчёт]
Научился: начали создавать верхний слой игры. начинает походить на оригинал =3 
36 Клавишные инструменты 00:04:16
48 чел. ★ 5 Done
  На этом слайде мы создадим два метода в классе Game - pressLeftButton() и pressRightButton()
Отчёт отправил: 986. Антон Лазарец Выполнено за 4 мин. [Показать отчёт]
Научился: написали минимальный функционал для перехода к работе с мышкой 
37 Мышечный адаптер 00:06:27
47 чел. ★ 5 Done
  На этом слайде мы, наконец, добавим интерактив в нашу программу и зарегистрируем адаптер мыши для опроса левой и правой кнопки.
Отчёт отправил: 986. Антон Лазарец Выполнено за 7 мин. [Показать отчёт]
Научился: шо еще для счастья нужно?) уже можно играца 
38 Схема правой педали 00:02:24
47 чел. ★ 5 Done
  На этом слайде мы разберем алгоритм нажатия правой кнопки мышки в игре JavaSweeper
Отчёт отправил: 986. Антон Лазарец Выполнено за 3 мин. [Показать отчёт]
Научился: сейчас в классе Flag напишем функцию для определения выполнения нужных действий в зависимости от состояния клетки над котороый действия необходимо выполнить 
39 Смена флагов 00:03:36
47 чел. ★ 5 Done
  На этом слайде мы реализуем установку и удаление флажков и напишем реализацию функции pressRightButton()
Отчёт отправил: 986. Антон Лазарец Выполнено за 5 мин. [Показать отчёт]
Научился: реализовали функцию тогла для пкм. вышло довольно компактно - приятно читать такой код 
40 Добро пожаловать! 00:04:24
47 чел. ★ 5 Done
  На этом слайде мы добавим строчку состояния в нашу программу
Отчёт отправил: 986. Антон Лазарец Выполнено за 7 мин. [Показать отчёт]
Научился: научился выводить лейбл на авт. панели. пасхалки в конце видео - уровень Марвел может даже выше)  
41 Недетские состояния 00:02:52
47 чел. ★ 5 Done
  На этом слайде мы создадим перечисление GameState, в котором будет храниться состояние игры

Отчёт отправил: 986. Антон Лазарец Выполнено за 3 мин. [Показать отчёт]
Научился: сделали новое перечисление - не самая сложная часть) 
42 Актуальное информирование 00:06:07
47 чел. ★ 5 Done
  На этом слайде мы сформируем сообщение о текущем статусе игры в зависимости от текущего состояния и выведем его на экран
Отчёт отправил: 986. Антон Лазарец Выполнено за 6 мин. [Показать отчёт]
Научился: надпись с поздравлением не влазиет( 
43 Алгоритм открывашки 00:07:43
47 чел. ★ 5 Done
  На этом слайде мы займемся обработкой нажатия левой кнопки мышки
Отчёт отправил: 986. Антон Лазарец Выполнено за 7 мин. [Показать отчёт]
Научился: интересный подход к решению задачи. на ютубе видел еще один, тоже довольно интересный - расписывание игры на мелкие части. и потом реализация их подходом tdd - было необычно таки 
44 Выбор из выбора 00:05:05
47 чел. ★ 5 Done
  На этом слайде мы напишем метод openBox(), который перебирает все возможные состояния клеток и в зависимости от этого выполняет ту или иную операцию.

Отчёт отправил: 986. Антон Лазарец Выполнено за 7 мин. [Показать отчёт]
Научился: вот сейчас идеально. беспроигрышный вариант) 
45 Нулевая рекурсия 00:04:01
47 чел. ★ 5 Done
  На этом слайде мы рекурсивно откроем все клетки вокруг нулей.
Отчёт отправил: 986. Антон Лазарец Выполнено за 7 мин. [Показать отчёт]
Научился: котлин чуть-чуть поломался из-за рекурсии, но мы вроде бы договорились с ним) 
46 Учёт зарытых флагов 00:04:19
47 чел. ★ 5 Done
  На этом слайде мы будем считать количество флажков и закрытых клеток на нашем поле
Отчёт отправил: 986. Антон Лазарец Выполнено за 10 мин. [Показать отчёт]
Научился: сделали счетчик флажков. интересно. в котлине при создании переменной, насколько я понял, нет доступа непосредственно к переменной. работа производится со сгенерированными get и set методами.  а при объявлении всего поля private скрываются эти метода. так что есть смысл делать их публичными, а на set ставить модификатор private.  
47 Телеграмма о флажках 00:03:28
47 чел. ★ 5 Done
  На этом слайде мы выведем сообщение пользователю, сколько флажков и сколько бомб есть на экране
Отчёт отправил: 986. Антон Лазарец Выполнено за 30 мин. [Показать отчёт]
Научился: подозрительная замена свича. брейк по дефолту стоит и отменить вроде бы нельзя, поэтому убрал блок дефолт и перекинул логику на played 
48 День Победы! 00:05:25
47 чел. ★ 5 Done
  На этом слайде мы проверим, а не победили ли мы!
Отчёт отправил: 986. Антон Лазарец Выполнено за 9 мин. [Показать отчёт]
Научился: помоему даже оригинальный сапер такое не умеет делать. жаль проверить не могу из за отсутствия такового на машине 
49 Первая ошибка сапёра 00:06:13
47 чел. ★ 5 Done
  На этом слайде мы зафиксируем поражение, когда игрок подорвался на бомбе.
Отчёт отправил: 986. Антон Лазарец Выполнено за 9 мин. [Показать отчёт]
Научился: сделали корректное окончание игры и начало новой. жаль что конструкция return if должна содержать else. а то получилось бы еще компактнее 
50 Открываем карты 00:07:26
45 чел. ★ 5 Done
  На этом слайде мы покажем расположение бомб после проигрыша.
Отчёт отправил: 986. Антон Лазарец Выполнено за 11 мин. [Показать отчёт]
Научился: the end is coming. вроде бы закончили всю работу с отображением всевозможных состояний и сообщений 
51 Цифровой помощник сапёра 00:11:31
46 чел. ★ 5 Done
  На этом слайде мы напишем помощник, который помогает открывать заведомо безопасные клетки.
Отчёт отправил: 986. Антон Лазарец Выполнено за 16 мин. [Показать отчёт]
Научился: the end has come. оооочень круто вышло. и все довольны) у вас получился отличный курс. я более-менее въехал в новый язык от jet brains. джава конечно - классика. но не буду брезговать и kotlin'ом и учить дальше. боюсь что видео отчет не выйдет записать т.к. нет микрофона на данный момент. thanx a lot!! 
52 Финальный аккорд 00:17:49
35 чел. ★ 5 Open
  На этом видео мы проанализируем всё, что было сделано - пройдёмся по всему коду программы.
Также поговорим о создании Бота для игры Сапёр - как это можно сделать.
Ваше задание - записать видеообзор созданной игры, выложить
на youtube и разместить ссылку на видео в описании.
  Итого:   52 видеоурока 3 час. 50 мин.
1 тест
35 чел. ★ 4.96  
  Финалисты:   Никита,   Владислав,   Иван Воронин,   1  ,   Александр Р.,   Danil42Russia,   Pavlin,   Андрей Шевченко,   Neverwinter 2,   Сергей Стефаненко,   Александр,   Михаил,   Hofflin,   Сергей,   VladYorkyee,   chokayes,   Александр,   Tekashnik,   Денис,   Vladimir Falejev,   Yefim,   Иван,   Новопашин Владимир,   sergeykin,   FireWolf,   Кирилл Шмойлов,   yerv,   Нюта,   Anna,   Алексей В.,   AZANIR,   Дмитрий,   zhikharevav,   Dmitry Sinitsin,   Андрей Гладков .

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





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

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

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

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


Научился: Создавать окна, использовать адаптер для мыши. Все это писать на языке Java. Создавать и использовать перечисления. Использовать ООП при написании программ.
Трудности: Сложно было успевать все записывать за маэстро. Чувствуется, что за кадром осталась огромная работа по рефакторингу. Нам же достался бриллиант, сверкающий своими гранями, т.к. каждая функция на своем месте - ни удалить, ни прибавить. Прямо скажу, что курс - образец для подражания, но пока это для меня недостижимая цель. Когда сам начинаешь писать, все валится в одну кучу. Так что буду стремиться к совершенству. Спасибо огромное за курс! Получил огромное удовольствие от его прохождения!



Научился: Просьба за то, что не снял видеообзор камни не кидать xD Была проделана большая работа. Данный курс был разбит на короткие уроки в котором не было воды. Его можно сравнить с хороший книгой, прочитав один раз, хочется прочитать опять. Но понимая, что вложил 0 усилий что бы сделать данную игру, приходят мысли что надо сесть осмыслить и сделать самому. Спасибо Евгению Витольдовичу за данный курс. На этом всё)