
Мы начинаем создание легендарной игровой программы "Сапёр" на языке программирования Java.
Для начала мы подготовим всё необходимое.
На этом слайде мы создадим новый проект и запустим JFrame приложение.
На этом слайде мы настроим JFrame приложение и пропишем необходимые параметры.
На этом слайде мы обсудим все поля и методы основного класса нашей запускаемой игры JavaSweeper, который наследуется от JFrame.
На этом слайде мы добавим на нашу форму панель, установим размеры и разместим её по центру экрана
На этом слайде мы займемся рефакторингом. Мы не будем добавлять новой функциональности, а просто красиво оформим то, что уже есть.
Нa этом слайде мы наконец-то начнем рисовать. Создадим Paint-компонент для отображения рисунков на нашей панели и на форме.
Нa этом слайде мы добавим в наш проект картинки, которые потом будем показывать на панели во время игры.
Нa этом слайде мы выведем картинку на панель
Нa этом слайде мы добавим еще пару картинок на нашу форму.
Нa этом слайде мы добавим константы и немножко порефакторим.
Нa этом слайде мы создадим перечисление Box
Нa этом слайде мы выведем все картинки на форме
Нa этом слайде мы поместим картинку в каждый экземпляр перечисления Box.
Ошибка в видео на 0:40 "Мы просто сделаем приватное поле Image" - подразумевается публичное поле.
Нa этом слайде мы сделаем загрузку картинок через систему ресурсов в языке Java
Нa этом слайде мы создадим запускаемый JAR-архив для нашей программы
Примечание.
При попытке запуска jar на линуксе появляется сообщение "is not marked as executable".
Необходимо запускать архив из командной строки:
java -jar JavaSweeper.jar
Либо разрешить исполнение этого файла, чтобы запускать по клику мышкой:
chmod +x JavaSweeper.jar
На этом слайде мы разберем UML-схему нашего проекта
На этом слайде мы создадим класс Coord и задействуем его в нашей программе
На этом слайде мы создадим класс Ranges, который будет использоваться во многих классах нашего проекта и позволит задавать глобальные параметры и перебор всех координат.
На этом слайде мы создадим класс Range с двумя статичными методами для установки и получения размеров нашего поля.
На этом слайде мы добавим в класс Range список всех координат нашего поля и будем его использовать для перебора всех клеток
На этом слайде мы добавим иконку нашей программе и немножко пошалим с отображением картинок на экране
На этом слайде мы начнем создавать фасадный класс Game и напишем первые два метода этого класса
На этом слайде мы создадим класс Game и реализуем в нем конструктор, а также метод getBox(), который по заданным координатам возвращает, что должно быть в указанной клетке нашего поля.
На этом слайде мы создадим класс Matrix для хранения всех элементов нашего игрового поля.
На этом слайде мы добавим в класс Matrix два метода - геттер и сеттер для получения и установки полей нашей игры.
На этом слайде мы поговорим о классе Bomb, который будет использоваться для хранения нижнего слоя нашего поля, где находятся бомбы и числа вокруг них.
На этом слайде мы начнем создавать класс Bomb.
На этом слайде мы разместим бомбы в случайных местах на нашей карте.
На этом слайде мы исправим несколько ошибок и добавим в класс Coord метод для сравнения двух координат.
На этом слайде мы научимся проставлять единицы вокруг каждой бомбы.
На этом слайде мы будем увеличивать цифры вокруг каждой новой размещенной бомбы.
На этом слайде мы исключим попадание двух бомб в одну воронку.
На этом слайде мы перейдем к верхнему уровню нашей абстракции - классу Flag.
На этом слайде мы создадим методы start() и get() в класс Flag.
На этом слайде мы создадим два метода в классе Game: pressLeftButton() и pressRightButton().
На этом слайде мы, наконец, добавим интерактив в нашу программу и зарегистрируем адаптер мыши для опроса левой и правой кнопки.
На этом слайде мы разберем алгоритм нажатия правой кнопки мышки в игре JavaSweeper.
На этом слайде мы реализуем установку и удаление флажков и напишем реализацию функции pressRightButton().
На этом слайде мы добавим строчку состояния в нашу программу.
На этом слайде мы создадим перечисление GameState, в котором будет храниться состояние игры.
На этом слайде мы сформируем сообщение о текущем статусе игры в зависимости от текущего состояния и выведем его на экран.
На этом слайде мы займемся обработкой нажатия левой кнопки мышки.
На этом слайде мы напишем метод openBox(), который перебирает все возможные состояния клеток и в зависимости от этого выполняет ту или иную операцию.
На этом слайде мы рекурсивно откроем все клетки вокруг нулей.
На этом слайде мы будем считать количество флажков и закрытых клеток на нашем поле.
На этом слайде мы выведем сообщение пользователю, сколько флажков и сколько бомб есть на экране.
На этом слайде мы проверим, а не победили ли мы!
На этом слайде мы зафиксируем поражение, когда игрок подорвался на бомбе.
На этом слайде мы покажем расположение бомб после проигрыша.
На этом слайде мы напишем помощник, который помогает открывать заведомо безопасные клетки.
На этом видео мы проанализируем всё, что было сделано - пройдёмся по всему коду программы.
На этом курсе мы создадим легендарную игру «Сапёр» на языке программирования Java.
Во время создания этой игры мы поработаем с JFrame, с адаптером мышки, с картинками, а также напишем интересные алгоритмы с использованием матриц, рекурсии, ООП.
Процесс создания программы разбит на 50 коротких слайдов, на каждом из которых мы воплощаем одну завершённую мысль.
Курс проходится легко и с удовольствием, в конце у вас будет рабочая игрушка, написанная по всем правилам ООП.