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.

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

Отчёт отправил: 17181. Anna Выполнено за 10 мин. [Показать отчёт]
Научился: setDefaultCloseOperation 
Сложности: ничего 
4 Полёт над классом 00:03:53
89 чел. ★ 4.8 Done
  На этом слайде мы обсудим все поля и методы основного класса нашей запускаемой игры JavaSweeper, который наследуется от JFrame
Отчёт отправил: 17181. Anna Выполнено за 22 час. 19 мин. [Показать отчёт]
Научился: Наиболее интересный метод initPanel: она задает размер поля, обрабатывает клики мышкой и вызывает метод для отрисовки всего интерфейса. 
Сложности: Выбрать между initPanel и main 
5 Пустая панель 00:02:33
88 чел. ★ 4.9 Done
  На этом слайде мы добавим на нашу форму панель, установим ее размер и разместим ее по центру экрана
Отчёт отправил: 17181. Anna Выполнено за 15 мин. [Показать отчёт]
Научился: 1) метод pack(), я вместо него вызывала setSize 2) порядок вызовов pack() и setLocationRelativeTo влияет на место отображения окна 
Сложности: все легко и понятно 
6 Раздельная инициализация 00:02:23
88 чел. ★ 4.9 Done
  На этом слайде мы займемся рефакторингом. Мы не будем добавлять новой функциональности, а просто красиво оформим то, что уже есть.
Отчёт отправил: 17181. Anna Выполнено за 17 мин. [Показать отчёт]
Научился: Idea может создавать методы c помощью инструмента Refactor (и не только методы, но и переменные, поля, константы и т.д.) 
Сложности: все легко 
7 Метод рисования 00:01:59
88 чел. ★ 4.9 Done
  На этом слайде мы наконец-то начнем рисовать. Создадим Paint-компонент для отображения рисунков на нашей панели и на форме.
Отчёт отправил: 17181. Anna Выполнено за 7 мин. [Показать отчёт]
Научился: рисовать линию с помощью paintComponent 
Сложности: все легко) 
8 Импорт картинок 00:01:22
86 чел. ★ 4.9 Done
  На этом слайде мы добавим в наш проект картинки, которые потом будем показывать на панели во время игры.
Отчёт отправил: 17181. Anna Выполнено за 8 мин. [Показать отчёт]
Научился: Добавлять папку с ресурсами (картинками) в проект 
Сложности: все легко 
9 Загрузка и отображение 00:02:13
86 чел. ★ 4.9 Done
  На этом слайде мы выведем картинку на панель
Отчёт отправил: 17181. Anna Выполнено за 20 мин. [Показать отчёт]
Научился: отображать картинку на панели 
Сложности: запуталась в методах Image getImage().....получается, что мы создаем Image getImage() в классе JavaSweeper и в нем вызываем Image getImage() класса ImageIcon..... 
10 Угловая бомба 00:01:31
85 чел. ★ 4.9 Done
  На этом слайде мы добавим еще пару картинок на нашу форму.
Отчёт отправил: 17181. Anna Выполнено за 7 мин. [Показать отчёт]
Научился: Shift+F10 - запуск проекта в Idea 
Сложности: все легко 
11 Константные размеры 00:02:42
85 чел. ★ 4.9 Done
  На этом слайде мы добавим константы и немножко порефакторим.
Отчёт отправил: 17181. Anna Выполнено за 13 мин. [Показать отчёт]
Научился: пока что ничего нового 
Сложности: все легко 
12 Перечисление кубиков 00:03:42
85 чел. ★ 4.9 Done
  На этом слайде мы создадим перечисление Box
Отчёт отправил: 17181. Anna Выполнено за 12 мин. [Показать отчёт]
Научился: ничего нового 
Сложности: все легко 
13 Первый цикл 00:01:59
85 чел. ★ 4.9 Done
  На этом слайде мы выведем все картинки на форме
Отчёт отправил: 17181. Anna Выполнено за 7 мин. [Показать отчёт]
Научился: ordinal() 
Сложности: все легко 
14 Картинка в кубике 00:03:45
84 чел. ★ 4.9 Done
  На этом слайде мы поместим картинку в каждый экземпляр перечисления Box.

Отчёт отправил: 17181. Anna Выполнено за 22 мин. [Показать отчёт]
Научился: пока что ничего нового 
Сложности: все легко 
15 Источник ресурсов 00:01:53
79 чел. ★ 4.9 Done
  На этом слайде мы сделаем загрузку картинок через систему ресурсов в языке Java
Отчёт отправил: 17181. Anna Выполнено за 8 мин. [Показать отчёт]
Научился: создавать корень ресурсов и обращаться к ресурсам через getClass().getResource() 
Сложности: все легко 
16 Запускаемый jархив 00:02:55
73 чел. ★ 5 Done
  На этом слайде мы создадим запускаемый JAR-архив для нашей программы

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

Отчёт отправил: 17181. Anna Выполнено за 30 мин. [Показать отчёт]
Научился: Просматривать содержимое jar-файла 
Сложности: все легко 
17 Карта классных сокровищ 00:04:48
70 чел. ★ 4.9 Done
  На этом слайде мы разберем UML-схему нашего проекта
Отчёт отправил: 17181. Anna Выполнено за 2 дня 4 час. 26 мин. [Показать отчёт]
Научился: Игра будет состоять из двух "слоев": бомбы с цифрами и неоткрытые клетки с флажками. 
Сложности: Все легко 
18 Наши координаты 00:03:24
65 чел. ★ 5 Done
  На этом слайде мы создадим класс Coord и задействуем его в нашей программе
Отчёт отправил: 17181. Anna Выполнено за 14 мин. [Показать отчёт]
Научился: ничего нового 
Сложности: все легко 
19 Статичная граница 00:03:12
65 чел. ★ 4.9 Done
  На этом слайде мы создадим класс Ranges, который будет использоваться во многих классах нашего проекта и позволит задавать глобальные параметры и перебор всех координат.
Отчёт отправил: 17181. Anna Выполнено за 18 мин. [Показать отчёт]
Научился: Почему setSize без возвращаемого типа, как я понимаю, он возвращает void... Это опечатка, или я чего-то не понимаю? 
Сложности: все легко 
20 Установка размеров 00:04:22
64 чел. ★ 4.9 Done
  На этом слайде мы создадим класс Range с двумя статичными методами для установки и получения размеров нашего поля.
Отчёт отправил: 17181. Anna Выполнено за 22 мин. [Показать отчёт]
Научился: пока что ничего нового 
Сложности: все легко 
21 Полный список 00:04:28
60 чел. ★ 5 Done
  На этом слайде мы добавим в класс Range список всех координат нашего поля и будем его использовать для перебора всех клеток
Отчёт отправил: 17181. Anna Выполнено за 17 мин. [Показать отчёт]
Научился: Idea может генерировать методы и перемещать их c помощью ctrl+shift+up/down 
Сложности: все легко 
22 Радуга картинок 00:03:18
57 чел. ★ 4.9 Done
  На этом слайде мы добавим иконку нашей программе и немножко пошалим с отображением картинок на экране
Отчёт отправил: 17181. Anna Выполнено за 11 мин. [Показать отчёт]
Научился: Метод values() 
Сложности: все легко 
23 Фасадный класс 00:02:05
57 чел. ★ 4.9 Done
  На этом слайде мы начнем создавать фасадный класс Game и напишем первые два метода этого класса

Отчёт отправил: 17181. Anna Выполнено за 25 мин. [Показать отчёт]
Научился: Паттерн Фасад Фасад позволяет создать простой интерфейс для взаимодействия с пользователем. Класс Game скрывает сложности, связанные с процессом игры. Пользователь кликает мышкой по окну игрового приложения и видит результат клика: бомба, флажок или цифра, не задумываясь о том, как реализована логика работы программы. 
Сложности: совместить теорию работы Фасада с классом Game 
24 Игровая координата 00:04:07
57 чел. ★ 4.9 Done
  На этом слайде мы создадим класс Game и реализуем в нем конструктор, а также метод getBox(), который по заданным координатам возвращает, что должно быть в указанной клетке нашего поля.
Отчёт отправил: 17181. Anna Выполнено за 16 мин. [Показать отчёт]
Научился: Создан фасадный класс Game 
Сложности: все легко 
25 Матрица мира 00:04:32
56 чел. ★ 4.9 Done
  На этом слайде мы создадим класс Matrix для хранения всех элементов нашего игрового поля
Отчёт отправил: 17181. Anna Выполнено за 22 мин. [Показать отчёт]
Научился: Создали класс Matrix  
Сложности: все легко 
26 За гранью видимого 00:04:49
55 чел. ★ 4.9 Done
  На этом слайде мы добавим в класс Matrix два метода - геттер и сеттер для получения и установки полей нашей игры
Отчёт отправил: 17181. Anna Выполнено за 19 мин. [Показать отчёт]
Научился: игра все больше походит на настоящий сапер 
Сложности: все легко 
27 Бомбанутый класс 00:02:55
53 чел. ★ 5 Done
  На этом слайде мы поговорим о классе Bomb, который будет использоваться для хранения нижнего слоя нашего поля, где находятся бомбы и числа вокруг них
Отчёт отправил: 17181. Anna Выполнено за 26 мин. [Показать отчёт]
Научился: Добавили класс Bomb, который овечает за размещение бомб и циферок, корректирует количество бомб в зависимости от размера поля. 
Сложности: все легко 
28 Тестовая бомба 00:05:11
54 чел. ★ 5 Done
  На этом слайде мы начнем создавать класс Bomb
Отчёт отправил: 17181. Anna Выполнено за 13 мин. [Показать отчёт]
Научился: Раелизован класс Bomb 
Сложности: все легко 
29 Случайные бомборазмещения 00:04:35
54 чел. ★ 5 Done
  На этом слайде мы разместим бомбы в случайных местах на нашей карте
Отчёт отправил: 17181. Anna Выполнено за 24 мин. [Показать отчёт]
Научился: Добавлена генерация бомб 
Сложности: все легко 
30 Сравнение координат 00:03:09
53 чел. ★ 5 Done
  На этом слайде мы исправим несколько ошибок и добавим в класс Coord метод для сравнения двух координат
Отчёт отправил: 17181. Anna Выполнено за 10 мин. [Показать отчёт]
Научился: Переопределен метод для сравнения координат 
Сложности: все легко 
31 Ограда из единиц 00:06:29
53 чел. ★ 4.9 Done
  На этом слайде мы научимся проставлять единицы вокруг каждой бомбы
Отчёт отправил: 17181. Anna Выполнено за 17 мин. [Показать отчёт]
Научился: Добавлены единички вокруг бомб 
Сложности: все легко 
32 Следующая цифра 00:04:16
51 чел. ★ 5 Done
  На этом слайде мы будем увеличивать цифры вокруг каждой новой размещенной бомбы
Отчёт отправил: 17181. Anna Выполнено за 40 мин. [Показать отчёт]
Научился: Программа правильно расставляет циферки вокруг бомб 
Сложности: все легко 
33 Дважды в одну воронку 00:05:52
49 чел. ★ 5 Done
  На этом слайде мы исключим попадание двух бомб в одну воронку
Отчёт отправил: 17181. Anna Выполнено за 29 мин. [Показать отчёт]
Научился: Закончен нижний слой програмы - генерируется правильное количество бомб 
Сложности: все легко 
34 Флаг над классом 00:09:18
48 чел. ★ 5 Done
  На этом слайде мы перейдем к верхнему уровню нашей абстракции - классу Flag.
Отчёт отправил: 17181. Anna Выполнено за 55 мин. [Показать отчёт]
Научился: setNoBombToFlaggedSafeBox() - устанавливает картинку с перечеркнутой бомбой там, где игрок с помощью флажка  неверно определил бомбу 
Сложности: все легко 
35 Королевская траншея 00:05:02
48 чел. ★ 5 Done
  На этом слайде мы создадим методы start() и get() в класс Flag.
Отчёт отправил: 17181. Anna Выполнено за 15 мин. [Показать отчёт]
Научился: Начали работать над верхним уровнем 
Сложности: все легко 
36 Клавишные инструменты 00:04:16
48 чел. ★ 5 Done
  На этом слайде мы создадим два метода в классе Game - pressLeftButton() и pressRightButton()
Отчёт отправил: 17181. Anna Выполнено за 16 мин. [Показать отчёт]
Научился: Создание метода через alt+enter 
Сложности: все легко 
37 Мышечный адаптер 00:06:27
47 чел. ★ 5 Done
  На этом слайде мы, наконец, добавим интерактив в нашу программу и зарегистрируем адаптер мыши для опроса левой и правой кнопки.
Отчёт отправил: 17181. Anna Выполнено за 11 мин. [Показать отчёт]
Научился: Добавлена обработка кликов мыши 
Сложности: все легко 
38 Схема правой педали 00:02:24
47 чел. ★ 5 Done
  На этом слайде мы разберем алгоритм нажатия правой кнопки мышки в игре JavaSweeper
Отчёт отправил: 17181. Anna Выполнено за 18 мин. [Показать отчёт]
Научился: При клике правой кнопкой мыши проверяем, открыта ли клетка. Если открыта, то ничего не делаем. Если закрыта, проверяем, стоит ли флаг. Если стоит, убираем флаг. Если не стоит, устанавливаем флаг. 
Сложности: все легко 
39 Смена флагов 00:03:36
47 чел. ★ 5 Done
  На этом слайде мы реализуем установку и удаление флажков и напишем реализацию функции pressRightButton()
Отчёт отправил: 17181. Anna Выполнено за 14 мин. [Показать отчёт]
Научился: Установка флажков теперь работает правильно 
Сложности: все легко 
40 Добро пожаловать! 00:04:24
47 чел. ★ 5 Done
  На этом слайде мы добавим строчку состояния в нашу программу
Отчёт отправил: 17181. Anna Выполнено за 10 мин. [Показать отчёт]
Научился: Добавлена метка для сообщений о состоянии игры 
Сложности: все легко 
41 Недетские состояния 00:02:52
47 чел. ★ 5 Done
  На этом слайде мы создадим перечисление GameState, в котором будет храниться состояние игры

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

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