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.

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

Отчёт отправил: 17348. Дмитрий Выполнено за 7 мин. [Показать отчёт]
Научился: Пока все понятно, но хотелось бы параллельно выполнению практических работ читать какую-нибудь литературу, чтобы понимание действий появлялось. Что можете порекомендовать? 
4 Полёт над классом 00:03:53
89 чел. ★ 4.8 Done
  На этом слайде мы обсудим все поля и методы основного класса нашей запускаемой игры JavaSweeper, который наследуется от JFrame
Отчёт отправил: 17348. Дмитрий Выполнено за 11 мин. [Показать отчёт]
Научился: Самую интересную не назову, хочу увидеть как работать с каждой) 
5 Пустая панель 00:02:33
88 чел. ★ 4.9 Done
  На этом слайде мы добавим на нашу форму панель, установим ее размер и разместим ее по центру экрана
Отчёт отправил: 17348. Дмитрий Выполнено за 9 мин. [Показать отчёт]
Научился: Научился вызывать и настраивать панель 
6 Раздельная инициализация 00:02:23
88 чел. ★ 4.9 Done
  На этом слайде мы займемся рефакторингом. Мы не будем добавлять новой функциональности, а просто красиво оформим то, что уже есть.
Отчёт отправил: 17348. Дмитрий Выполнено за 11 мин. [Показать отчёт]
Научился: Удобный функционал в IDEA, рефакторинг выполняется быстро и удобно 
7 Метод рисования 00:01:59
88 чел. ★ 4.9 Done
  На этом слайде мы наконец-то начнем рисовать. Создадим Paint-компонент для отображения рисунков на нашей панели и на форме.
Отчёт отправил: 17348. Дмитрий Выполнено за 5 мин. [Показать отчёт]
Научился: Научился вызывать метод рисования в Java.  
8 Импорт картинок 00:01:22
86 чел. ★ 4.9 Done
  На этом слайде мы добавим в наш проект картинки, которые потом будем показывать на панели во время игры.
Отчёт отправил: 17348. Дмитрий Выполнено за 3 мин. [Показать отчёт]
Научился: Ничего сложного не было) 
9 Загрузка и отображение 00:02:13
86 чел. ★ 4.9 Done
  На этом слайде мы выведем картинку на панель
Отчёт отправил: 17348. Дмитрий Выполнено за 11 мин. [Показать отчёт]
Научился: Изучил новый метод для вывода изображений 
10 Угловая бомба 00:01:31
85 чел. ★ 4.9 Done
  На этом слайде мы добавим еще пару картинок на нашу форму.
Отчёт отправил: 17348. Дмитрий Выполнено за 5 мин. [Показать отчёт]
Научился: Оптимизировал функцию вызова картинки 
11 Константные размеры 00:02:42
85 чел. ★ 4.9 Done
  На этом слайде мы добавим константы и немножко порефакторим.
Отчёт отправил: 17348. Дмитрий Выполнено за 9 мин. [Показать отчёт]
Научился: Научился пользоваться константами, это значительно упрощает программу и ускоряет процесс создания 
12 Перечисление кубиков 00:03:42
85 чел. ★ 4.9 Done
  На этом слайде мы создадим перечисление Box
Отчёт отправил: 17348. Дмитрий Выполнено за 5 мин. [Показать отчёт]
Научился: Создавать перечисления научился. 
13 Первый цикл 00:01:59
85 чел. ★ 4.9 Done
  На этом слайде мы выведем все картинки на форме
Отчёт отправил: 17348. Дмитрий Выполнено за 6 мин. [Показать отчёт]
Научился: Научился импортировать написанные классы, пользоваться циклом for и вызывать некоторые полезные его методы 
14 Картинка в кубике 00:03:45
84 чел. ★ 4.9 Done
  На этом слайде мы поместим картинку в каждый экземпляр перечисления Box.

Отчёт отправил: 17348. Дмитрий Выполнено за 32 мин. [Показать отчёт]
Научился: По сути, мы "закинули" в каждый экземпляр перечисления Box картинку, которая вызывается методом image. Правильно ли я понял? 
15 Источник ресурсов 00:01:53
79 чел. ★ 4.9 Done
  На этом слайде мы сделаем загрузку картинок через систему ресурсов в языке Java
Отчёт отправил: 17348. Дмитрий Выполнено за 9 мин. [Показать отчёт]
Научился: Научился настраивать дирректрорию для хранения ресурсов и обращаться к ней 
16 Запускаемый jархив 00:02:55
73 чел. ★ 5 Done
  На этом слайде мы создадим запускаемый JAR-архив для нашей программы

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

Отчёт отправил: 17348. Дмитрий Выполнено за 4 мин. [Показать отчёт]
Научился: Научился создавать запускаемый jar-архив 
17 Карта классных сокровищ 00:04:48
70 чел. ★ 4.9 Done
  На этом слайде мы разберем UML-схему нашего проекта
Отчёт отправил: 17348. Дмитрий Выполнено за 13 мин. [Показать отчёт]
Научился: Очень правильный, на мой взгляд, подход к планированию архитектуры программы, наглядно и, в принципе, можно использовать как подсказку для дальнейшей работы. 
18 Наши координаты 00:03:24
65 чел. ★ 5 Done
  На этом слайде мы создадим класс Coord и задействуем его в нашей программе
Отчёт отправил: 17348. Дмитрий Выполнено за 10 мин. [Показать отчёт]
Научился: Создал класс, который хранит в своих переменных передаваемые значения координат. 
19 Статичная граница 00:03:12
65 чел. ★ 4.9 Done
  На этом слайде мы создадим класс Ranges, который будет использоваться во многих классах нашего проекта и позволит задавать глобальные параметры и перебор всех координат.
Отчёт отправил: 17348. Дмитрий Выполнено за 7 мин. [Показать отчёт]
Научился: Смысл каждого поля и метода понятен, перехожу к следующему уроку, хочется уже увидеть их реализацию. 
20 Установка размеров 00:04:22
64 чел. ★ 4.9 Done
  На этом слайде мы создадим класс Range с двумя статичными методами для установки и получения размеров нашего поля.
Отчёт отправил: 17348. Дмитрий Выполнено за 14 мин. [Показать отчёт]
Научился: Создал класс для определения размеров игрового поля, увидел как применять его (обращаться к нему) в основном классе main. 
21 Полный список 00:04:28
60 чел. ★ 5 Done
  На этом слайде мы добавим в класс Range список всех координат нашего поля и будем его использовать для перебора всех клеток
Отчёт отправил: 17348. Дмитрий Выполнено за 32 мин. [Показать отчёт]
Научился: Научился вызывать Arraylist<> и обращаться к нему. 
22 Радуга картинок 00:03:18
57 чел. ★ 4.9 Done
  На этом слайде мы добавим иконку нашей программе и немножко пошалим с отображением картинок на экране
Отчёт отправил: 17348. Дмитрий Выполнено за 16 мин. [Показать отчёт]
Научился: объясните кто-нибудь на пальцах, как работает этот цикл, ибо я сильно тут туплю for (Coord coord : Ranges.getAllCoords())                     g.drawImage((Image) Box.values()[(coord.x + coord.y) % Box.values().length].image,                             coord.x * IMAGE_SIZE,                             coord.y*IMAGE_SIZE, this); 
23 Фасадный класс 00:02:05
57 чел. ★ 4.9 Done
  На этом слайде мы начнем создавать фасадный класс Game и напишем первые два метода этого класса

Отчёт отправил: 17348. Дмитрий Выполнено за 1 день 9 мин. [Показать отчёт]
Научился: Фасадный класс - класс, который, по сути, контролирует ход игры, определяет ее начало, воспринимает действия игрока и прочее 
24 Игровая координата 00:04:07
57 чел. ★ 4.9 Done
  На этом слайде мы создадим класс Game и реализуем в нем конструктор, а также метод getBox(), который по заданным координатам возвращает, что должно быть в указанной клетке нашего поля.
Отчёт отправил: 17348. Дмитрий Выполнено за 16 мин. [Показать отчёт]
Научился: Вынес функции определения размера поля игры и определения координаты элемента в отдельный класс. 
25 Матрица мира 00:04:32
56 чел. ★ 4.9 Done
  На этом слайде мы создадим класс Matrix для хранения всех элементов нашего игрового поля
Отчёт отправил: 17348. Дмитрий Выполнено за 14 мин. [Показать отчёт]
Научился: Создал матрицу, хранящую ссылки на координаты изображений 
26 За гранью видимого 00:04:49
55 чел. ★ 4.9 Done
  На этом слайде мы добавим в класс Matrix два метода - геттер и сеттер для получения и установки полей нашей игры
Отчёт отправил: 17348. Дмитрий Выполнено за 25 мин. [Показать отчёт]
Научился: Добавил в класс matrix сеттер и геттер, 
27 Бомбанутый класс 00:02:55
53 чел. ★ 5 Done
  На этом слайде мы поговорим о классе Bomb, который будет использоваться для хранения нижнего слоя нашего поля, где находятся бомбы и числа вокруг них
Отчёт отправил: 17348. Дмитрий Выполнено за 4 мин. [Показать отчёт]
Научился: Класс BombMap размещает бомбы на поле, расставляет поля с цифрами вокруг бомб, контролирует колличество бомб  в игре. 
28 Тестовая бомба 00:05:11
54 чел. ★ 5 Done
  На этом слайде мы начнем создавать класс Bomb
Отчёт отправил: 17348. Дмитрий Выполнено за 12 мин. [Показать отчёт]
Научился: Создал класс bomb, на данный момент класс может только размещать бомбы там, где указанно в методе start, возвращать координаты какой-либо бомбы, сохраненной в Matrix. 
29 Случайные бомборазмещения 00:04:35
54 чел. ★ 5 Done
  На этом слайде мы разместим бомбы в случайных местах на нашей карте
Отчёт отправил: 17348. Дмитрий Выполнено за 36 мин. [Показать отчёт]
Научился: научился рандомно расставлять мины 
30 Сравнение координат 00:03:09
53 чел. ★ 5 Done
  На этом слайде мы исправим несколько ошибок и добавим в класс Coord метод для сравнения двух координат
Отчёт отправил: 17348. Дмитрий Выполнено за 15 мин. [Показать отчёт]
Научился: @Override - в чем суть этого действия? Мы переопределяем работу метода equals?  
31 Ограда из единиц 00:06:29
53 чел. ★ 4.9 Done
  На этом слайде мы научимся проставлять единицы вокруг каждой бомбы
Отчёт отправил: 17348. Дмитрий Выполнено за 19 мин. [Показать отчёт]
Научился: Создал цикл, который создает перечень ссылок на координаты клеток, окружающих мину и научился использовать этот перечень для изображения картинок в соответсвующих координатах 
32 Следующая цифра 00:04:16
51 чел. ★ 5 Done
  На этом слайде мы будем увеличивать цифры вокруг каждой новой размещенной бомбы
Отчёт отправил: 17348. Дмитрий Выполнено за 32 мин. [Показать отчёт]
Научился: создал метод, который возвращает следующий боксик. Использовал его в методе, который устанавливает по ссылке из боксика картинку с цифрой 
33 Дважды в одну воронку 00:05:52
49 чел. ★ 5 Done
  На этом слайде мы исключим попадание двух бомб в одну воронку
Отчёт отправил: 17348. Дмитрий Выполнено за 35 мин. [Показать отчёт]
Научился: Курс очень нравиться, параллельно изучению курса читаю книгу Герберта Шилдта "Java. Полное руководство", такиим образом материал намного лучше усваивается и понимание действий появляется, а не просто повторение слайдов. 
34 Флаг над классом 00:09:18
48 чел. ★ 5 Done
  На этом слайде мы перейдем к верхнему уровню нашей абстракции - классу Flag.
Отчёт отправил: 17348. Дмитрий Выполнено за 1 день 57 мин. [Показать отчёт]
Научился: int getCountOfFlagedBoxesAround (Coord coord) - интересный метод, он определяет кооличество флагов рядом с клеткой, сравнивает полученое значение с тем числом, что отражено на поле и открывает все ближние поля если это число равно. 
35 Королевская траншея 00:05:02
48 чел. ★ 5 Done
  На этом слайде мы создадим методы start() и get() в класс Flag.
Отчёт отправил: 17348. Дмитрий Выполнено за 46 мин. [Показать отчёт]
Научился: Создал класс для создания матрицы верхнего уровня игры. 
36 Клавишные инструменты 00:04:16
48 чел. ★ 5 Done
  На этом слайде мы создадим два метода в классе Game - pressLeftButton() и pressRightButton()
Отчёт отправил: 17348. Дмитрий Выполнено за 27 мин. [Показать отчёт]
Научился: Написал методы для инициализации кликания мышью. Интересно теперь увидеть, каким образом будет выполнена функция клика. 
37 Мышечный адаптер 00:06:27
47 чел. ★ 5 Done
  На этом слайде мы, наконец, добавим интерактив в нашу программу и зарегистрируем адаптер мыши для опроса левой и правой кнопки.
Отчёт отправил: 17348. Дмитрий Выполнено за 47 мин. [Показать отчёт]
Научился: Зарегистрировал адаптер мыши 
38 Схема правой педали 00:02:24
47 чел. ★ 5 Done
  На этом слайде мы разберем алгоритм нажатия правой кнопки мышки в игре JavaSweeper
Отчёт отправил: 17348. Дмитрий Выполнено за 4 мин. [Показать отчёт]
Научился: Создаем алгоритм, который перебирает все возможные состояния панели - открыта, помечена флагом, закрыта, и в соответсвии с текущим состянием ничего не делает с панелью, убирает флаг или помечает флагом соответственно. 
39 Смена флагов 00:03:36
47 чел. ★ 5 Done
  На этом слайде мы реализуем установку и удаление флажков и напишем реализацию функции pressRightButton()
Отчёт отправил: 17348. Дмитрий Выполнено за 10 мин. [Показать отчёт]
Научился: Довел до ума функционал правой кнопки мыши. 
40 Добро пожаловать! 00:04:24
47 чел. ★ 5 Done
  На этом слайде мы добавим строчку состояния в нашу программу
Отчёт отправил: 17348. Дмитрий Выполнено за 16 мин. [Показать отчёт]
Научился: Добавил информационную панель внизу. 
41 Недетские состояния 00:02:52
47 чел. ★ 5 Done
  На этом слайде мы создадим перечисление GameState, в котором будет храниться состояние игры

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

Отчёт отправил: 17348. Дмитрий Выполнено за 9 мин. [Показать отчёт]
Научился: Создали метод, который перебирает все возможные состяния клетки и в зависимости от него будет выполнять какой-либо метод. 
45 Нулевая рекурсия 00:04:01
47 чел. ★ 5 Done
  На этом слайде мы рекурсивно откроем все клетки вокруг нулей.
Отчёт отправил: 17348. Дмитрий Выполнено за 15 мин. [Показать отчёт]
Научился: Реализовал метод, который в цикле получает координаты клеток вокруг той клетки, по которой щелкнули левой клавишей мыши (если она является пустой) и открывает все окружающие ее клетки. 
46 Учёт зарытых флагов 00:04:19
47 чел. ★ 5 Done
  На этом слайде мы будем считать количество флажков и закрытых клеток на нашем поле
Отчёт отправил: 17348. Дмитрий Выполнено за 11 мин. [Показать отчёт]
Научился: Добавил поля для подсчета колличества установленных флагов и открытых клеток и инициализировал их в конструкторе. 
47 Телеграмма о флажках 00:03:28
47 чел. ★ 5 Done
  На этом слайде мы выведем сообщение пользователю, сколько флажков и сколько бомб есть на экране
Отчёт отправил: 17348. Дмитрий Выполнено за 16 мин. [Показать отчёт]
Научился: Добавили в класс game геттеры, которые возвращают колличество флагов и бомб, сделали вывод на панель сообщения о колличестве выставленых и оставшихся флагов 
48 День Победы! 00:05:25
47 чел. ★ 5 Done
  На этом слайде мы проверим, а не победили ли мы!
Отчёт отправил: 17348. Дмитрий Выполнено за 25 мин. [Показать отчёт]
Научился: Реализовали метод в классе Game, который проверяет не победили ли мы, а именно - сравнивает колличество помеченых флагом боксиков с общим колличеством бомб. Если равны и все прочие клетки открыты значит победа. 
49 Первая ошибка сапёра 00:06:13
47 чел. ★ 5 Done
  На этом слайде мы зафиксируем поражение, когда игрок подорвался на бомбе.
Отчёт отправил: 17348. Дмитрий Выполнено за 35 мин. [Показать отчёт]
Научился: Создал метод, проверящий состояние игры и запускающий ее вновь при ее окончании 
50 Открываем карты 00:07:26
45 чел. ★ 5 Done
  На этом слайде мы покажем расположение бомб после проигрыша.
Отчёт отправил: 17348. Дмитрий Выполнено за 17 мин. [Показать отчёт]
Научился: Добавил функционал, который отображает невзорвавшиеся мины 
51 Цифровой помощник сапёра 00:11:31
46 чел. ★ 5 Done
  На этом слайде мы напишем помощник, который помогает открывать заведомо безопасные клетки.
Отчёт отправил: 17348. Дмитрий Выполнено за 1 час. 14 мин. [Показать отчёт]
Научился: Все работает! 
52 Финальный аккорд 00:17:49
35 чел. ★ 5 Done
  На этом видео мы проанализируем всё, что было сделано - пройдёмся по всему коду программы.
Также поговорим о создании Бота для игры Сапёр - как это можно сделать.
Ваше задание - записать видеообзор созданной игры, выложить
на youtube и разместить ссылку на видео в описании.
Отчёт отправил: 17348. Дмитрий Выполнено за 22 мин. [Показать отчёт]
Научился: Программа работает, курс прошел с удовольствием, в изучении Java оказался очень полезным. 
  Итого:   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 усилий что бы сделать данную игру, приходят мысли что надо сесть осмыслить и сделать самому. Спасибо Евгению Витольдовичу за данный курс. На этом всё)