Как создать программу для компьютера

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

Явный Сапёр

Создание легендароной игры "Сапёр"
на языке программирования Java.

На этом видеокурсе ты научишься создавать оконные
приложения на языке программирования Java,
работать с графикой, с матрицами,
составлять полезные алгоритмы.

Объём: 12 коротких видеоуроков
общей продолжительностью 3 часа.

Хочу купить!

Купить в рассрочку за мегахеши

Цена: 1000 p.


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

# Название видеоурока Решило Рейтинг Доступ
1 Вступление 00:05:24 20 чел. ★ 5 Done
  Мы начинаем создание игры "MineSweeper" на языке Java.
В этом уроке мы поиграем в эту игру и подготовим картинки.
Рекомендую самостоятельно нарисовать блок-схему игры.
Отчёт отправил: 10558. Иван Воронин Выполнено за 10 мин. [Показать отчёт]
Научился: ничему новому 
Сложности: ничего 
Комментарии: Отличный вебинар был =) 
2 Блок-схема 00:09:09 17 чел. ★ 5 Done
  На этом уроке мы составим блок-схему программы.
Что происходит в игре и как это всё связано друг с другом.
Обязательно нарисуйте схему от руки или на сайте draw.io.
В блок-схеме не хватает одного важно момента -
найдите, чего именно и дорисуйте на схеме.
Отчёт отправил: 10558. Иван Воронин Выполнено за 30 мин. [Показать отчёт]
Научился: ничему новому 
Сложности: найти время 
Комментарии: разделил схему на 3 части, в каждой части основные моменты 
3 Окно проекта 00:13:51 16 чел. ★ 5 Done
  На этом уроке мы начнём создание программы.
Создадим новый пустой Java-проект и создадим форму.
Отчёт отправил: 10558. Иван Воронин Выполнено за 20 мин. [Показать отчёт]
Научился: использовать IntelliJ IDEA для разработки, создание базовой формы 
Сложности: ничего 
Комментарии: Отличное IDE, есть опыт использования Eclipse и Android Studio 
4 Радуга картинок 00:24:07 13 чел. ★ 5 Done
  На этом уроке мы загрузим в проект все картинки.
Проинициализируем массив с картинками.
Напишем функцию paint() для их отображения.
Отчёт отправил: 10558. Иван Воронин Выполнено за 1 час. 10 мин. [Показать отчёт]
Научился: создавать кастомные панели, в которых можно рисовать 
Сложности: ничего 
Комментарии: создал кастомный класс панели, перенёс туда цикл рисования текстур боксиков добавил панель в форму тем самым нет необходимости в отступах и лэйбл отображается корректно внизу экрана =) з.ы. не мог, чтобы не сделать так, как планировалось! супер урок, идём дальше... 
5 Карта местности 00:18:01 13 чел. ★ 5 Done
  На этом уроке мы создадим матрицу map,
в которую случайным образом разместим мины.
Потом напишем функцию addOne() для проставки
цифр вокруг мин и отобразим это всё на экране.
Отчёт отправил: 10558. Иван Воронин Выполнено за 30 мин. [Показать отчёт]
Научился: ничему новому 
Сложности: найти время 
Комментарии: нужно создать второй массив для хранения данных о том, открыта клетка или нет, этот вариант предлагал на вебинаре и его же использовали в версии на C#, так что моё мнение не изменилось, а только подкрепилось =) 
6 Философия сапёра 00:09:44 12 чел. ★ 4.8 Done
  На этом уроке мы возьмём новые картинки,
сконвертируем их в jpg чтобы убрать прозрачность.
После этого пофилософствуем об аналогии
компьютерного и реального мира.

Отчёт отправил: 10558. Иван Воронин Выполнено за 20 мин. [Показать отчёт]
Научился: ничего новому 
Сложности: ничего 
Комментарии: То, что жеребёнок рождается и почти сразу начинает ходить, а человек рождается и по сути ничего пока не может, по той же причине рыбки после рождения сразу умеют дышать под водой, чего не может ни жеребёнок ни человек. Суть простая - в каждый объект мироздания закладывается не только "операционка" дос, виндоус, мак ось или *никс, но и уже присутствуют самые 2 важные вещи: начальная аппаратная комплектация и биос. от этого и зависит то, что в последствии потянет данная система, какой объём памяти и скорость процессора, какие средства ввода/вывода. Многие животные имеют шерсть, чтобы не замёрзнуть, когти и бивни как оружие, жабры для возможности дышать под водой, крылья чтобы парить в небесах, человеку же дан разум, чтобы придумать акваланг для дыхания под водой, самолёт для полётов в небе, корабль для плавания по воде и т.д. и т.п. поэтому сравнивать разные объекты бесполезно, каждый выполняет свою задачу, а вместе они создают баланс бесконечности =) 
7 Мины на панели 00:12:02 12 чел. ★ 5 Done
  На этом уроке мы создадим подкласс MinePanel.
Именно на этой панели мы будем размещать картинки.
Сделаем всё необходимое, чтобы программа заработала.
Отчёт отправил: 10558. Иван Воронин Выполнено за 5 мин. [Показать отчёт]
Научился: ничего нового 
Сложности: ничего 
Комментарии: код был готов ещё до вебинара, поэтому просмотрел видео на скорости х2 и залил отчёт =) жаль что не удалось состыковаться и провести этот урок, много чего рассказать хотелось, поэтому пишут вкратце тут: решил я изучить вопрос с панелью после того, как на вебинаре Магистр пытался использовать paintComponent, но не вышло и использовали paint, а позже в одном из отчётов кто-то заметил, что игровым полем замазали statusBar и его стало не видно, попытавшись увеличить размер формы, ничего не вышло и я решил немного изучить вопрос, ушло на это не много времени, но зато узнал, что как и в C#, тут есть тоже панель, как раз то, что надо, провёл пару тестов и вуаля, и марджины не нужны и статусбар видно и метод pack помогает подогнать размеры формы, отличный урок получился. Спасибо, Евгений Витольдович! з.ы. pack сработал, потому что setResizable должен быть раньше под коду, когда перенесли его выше, сразу сработало как надо 
8 Мышечный адаптер 00:12:30 12 чел. ★ 5 Done
  На этом уроке мы добавим подкласс-адаптер
для обработки нажатий кнопки мышки.
Сделаем вычисление координат
и простые действия по нажатию
левой и правой кнопки мышки.
Отчёт отправил: 10558. Иван Воронин Выполнено за 20 мин. [Показать отчёт]
Научился: повторение пройденного 
Сложности: ничего 
Комментарии: урок понравился тем, что не использовали для формирования поля боксики как было на C#, а сразу напрямую рисуем на панели, что ускоряет работу приложения в разы, идём дальше 
9 Правый флаг 00:15:44 11 чел. ★ 5 Done
  На этом уроке мы сделаем обработку правой кнопки мышки.
Для этого нам придётся добавить дополнительный массив,
в котором будет записано, что видно сверху нашего поля.
Отчёт отправил: 10558. Иван Воронин Выполнено за 30 мин. [Показать отчёт]
Научился: повторение пройденного 
Сложности: найти время 
Комментарии: в ротацию правой клавиши добавил вопросик обновление статусбара перенёс в отдельный метод в статусбаре видно размер поля и сколько установлено флажков из доступных (доступные это количество мин на поле) как обычно, если флажки кончились, то ставятся только вопросики =) 
10 Открывашка 00:16:46 11 чел. ★ 5 Done
  На этом уроке мы сделаем фишку автоматического
открытия плашек для клеток, вокруг которых уже
все мины проставлены. В стандартном сапёре эта
функция вызывается двойным щелчком мышки.
Отчёт отправил: 10558. Иван Воронин Выполнено за 1 час. 00 мин. [Показать отчёт]
Научился: повторил портирования с одного языка на другой 
Сложности: найти время 
Комментарии: добавил счётчик мин и флажков для отображения в статусбаре добавлена заготовка игровых фаз (игра, проигрыш, победа) генерация мин на поле происходит после первого клика первый клик никогда не попадает на мину createMap() переименовал в placeMines(), добавил необходимые параметры рефакторинг метода placeMines(), так же добавил комментарии addOne() переименовал в placeCounter() добавил метод onMap() добавлен метод обработки клика левой клавиши мыши методы rightButton() и leftButton() сделал приватными для открывания игрового поля добавлены 2 новых метода: changeTop() и changeMap() с необходимыми параметрами добавлен метод openCellsAround() для анализа и открытия клеток вокруг добавлен подсчёт неверно установленных флагов, при открытии отображается ложная мина рефакторинг обработки нажатий добавлена проверка, все ли пустые клетки открыты (в будущем для обработки победы) 
11 Волшебный метод 00:23:39 11 чел. ★ 4.8 Done
  На этом уроке мы создадим
волшебный метод cellOpen().
Именно в нём кроется вся магия логики игры.
Отчёт отправил: 10558. Иван Воронин Выполнено за 3 час. 30 мин. [Показать отчёт]
Научился: повторению пройденного 
Сложности: остановиться допиливать игрушку =) 
Комментарии: Добавлен рекурсивный метод открывания соседних пустых клеток. Добавлено описание фаз игры. Добавлен метод открывания всех мин и отображение ложных мин при подрыве. Если подорвался на мине, под ней появляется красный фон, открываются все мины, открываются ложные мины и игра переключается в фазу поражения. Если открыты все пустые ячейки, игра переключается в фазу победы и помечаются все мины флажками. Добавлена заготовка типа сложности, но пока только Профессионал. Рефактор инициализации игрового поля перед началом игры. Добавлен метод startGame(), вызывается если проиграл или выиграл. Добавлен метод updateTitle() для обновления информации в тайтле. Добавлен метод cellClickCheck() для проверки фазы игры (если проиграл/выиграл начать игру с нуля). Пока идёт игра, обрабатываются нажатия левой и правой клавиш мыши, как только нарвался на мину или победил, обрабатывается только средняя клавиша мыши, запускающая игру с начала. Теперь в тайтле отображается сообщение о победе/поражении и информация о том, как начать сначала. Добавлен счётчика времени, активируется при первом клике по закрытому полю, останавливается при победе/поражении. В тайтле отображается сообщение о победе/поражении и информация о том, как начать сначала. Так же в тайтле отображается затраченного времени до победы/поражения, пока игра не начата заново.  
12 Условие победы! 00:19:06 11 чел. ★ 5 Done
  На этом уроке мы закончим создание сапёра -
сделаем проверку на окончание игры,
поздравление с победой, с проигрышем,
и запрограммируем начало новой игры.
Отчёт отправил: 10558. Иван Воронин Выполнено за 1 час. 30 мин. [Показать отчёт]
Научился: работать со звуком в Java 
Сложности: найти время 
Комментарии: Добавлен звук тиканья таймера. Добавлен звук подрыва на мине. Текстуры перенесены в папку gfx. Звуковые эффекты перенесены в папку snd. Мин уменьшено с 99 до 40, для удобства тестирования. з.ы. так как задания текущего урока я выполнил в прошлом уроке, пришлось добавить в игру звук и порефакторить, чтобы не заливать пару скринов и писать, что всё это сделал ещё на прошлом уроке =) 
Видеообзор: https://youtu.be/r05eSApCHjI
  Итого:   12 видеоуроков общей продолжительностью 3 час. 00 мин. 11 чел. ★ 4.97  
  Финалисты:   Дмитрий,   Алексей В.,   Константин,   Новопашин Владимир,   Елена,   Иван Воронин,   Максим Лапшинов,   Сергей Соколов,   Tekashnik,   Babenko Oleg,   Reinis Stacevič .

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




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

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

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

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


Научился: создавать кастомные панели, в которых можно рисовать
создал кастомный класс панели, перенёс туда цикл рисования текстур боксиков добавил панель в форму тем самым нет необходимости в отступах и лэйбл отображается корректно внизу экрана =) з.ы. не мог, чтобы не сделать так, как планировалось! супер урок, идём дальше...


Научился: Создавать оконное приложение на JAVA
Трудности: Придумывать, что будет самым сложным
Действительно круто)) мне очень нравится, что я чуть чуть прикоснулся к java