1. Написание первой игры на игровом движке

У любой реализации компьютерной игры со стороны разработчика есть три стадии:

  1. Инициализация игры. Сюда можно отнести различные подготовительные действия: установку размера и прорисовку игрового поля, создание и установку игровых объектов в начальное положение, а также любые другие действия, которые необходимо выполнить в начале игры.
  2. Игровой процесс. Сюда можно отнести движение игровых объектов, действия игрока, учет заработанных очков, а также любые другие действия, которые необходимо выполнять с определенной периодичностью или по нажатию кнопок.
  3. Завершение игры. Сюда можно отнести остановку анимации, сообщение о победе/поражении, а также любые другие действия, которые необходимо выполнить в конце игры.

Сейчас мы последовательно пройдемся по всем трем шагам и посмотрим, как игровой движок JavaRush поможет сделать этот процесс проще.


2. Инициализация игры

Процесс инициализации игры с помощью игрового движка JavaRush состоит всего из двух шагов:

Шаг 1: Создаем основной класс игры

Для создания своей игры на основе игрового движка JavaRush вам нужно создать класс и унаследовать его от класса Game (com.javarush.engine.cell.Game). Это даст вашему классу возможность вызывать методы игрового движка, а движок получит возможность вызывать методы вашего класса. Пример:

import com.javarush.engine.cell.Game;

public class MySuperGame extends Game {
  ...
}

Шаг 2: Переопределяем метод initialize()

В методе initialize() будут происходить все действия, необходимые для старта игры: создание игрового поля, создание всех игровых объектов, и т.п. Вам нужно просто объявить этот метод в классе, унаследованном от класса Game. Пример:

import com.javarush.engine.cell.Game;

public class MySuperGame extends Game {
  @Override
  public void initialize() {
     // Тут выполняем все действия по инициализации игры и ее объектов
  }
}

Метод initialize() — это аналог метода main(): именно с него начинает выполняться весь ваш код, написанный для игры.



3. Создание игрового поля

Процесс создания игрового поля тоже состоит всего из двух шагов:

Шаг 1: Делим игровое поле на клетки

Все игровое поле делится игровым движком на клетки. Минимальный размер 3×3, максимальный 100×100.

Игровой экран имеет постоянный размер. Он может быть разделен на разное количество клеток. Например, ширина 7 и высота 9:

Обратите внимание, что нумерация клеток начинается с верхнего левого угла.

Чтобы задать размер игрового поля, используйте метод void setScreenSize(int width, int height). Он задает размер игрового поля. В качестве параметров принимает количество клеток по горизонтали (width) и по вертикали (height). Обычно вызывается один раз при запуске игры. Пример:

import com.javarush.engine.cell.Game;

public class MySuperGame extends Game {
   @Override    public void initialize()
   {
      // задаем размер поля 7x9 клеток
      setScreenSize(7, 9);
      ...
   }
}

В процессе написания игры, может понадобиться получить текущую ширину и высоту игрового поля. Для этого пригодятся методы int getScreenWidth() и int getScreenHeight().

Шаг 2: Включаем/выключаем сетку (необязательно)

Если вам не нравится, что на вашем игровом поле отображается черная сетка, разделяющая ячейки, вы можете ее выключить.

Метод void showGrid(boolean isShow) включает/выключает сетку, разделяющую клетки. По умолчанию сетка отображается. Чтобы ее выключить, вызовите этот метод с параметром false:

showGrid(false);

Результат:

Чтобы снова включить сетку, вызовите:

showGrid(true);

Результат:



4. Примитивная программа

Давайте напишем очень примитивную игру, которая использует игровой движок JavaRush. Она будет делать 3 действия:

  1. Разобьет игровое поле на 9 клеток: 3×3
  2. Отключит сетку — линии между клетками
  3. Центральную клетку раскрасит в синий цвет и напишет там букву Х.

Такая программа будет выглядеть так:

public class MySuperGame extends Game
{
   @Override
   public void initialize()
   {
      // Создаем игровое поле 3x3 клетки
      setScreenSize(3, 3);
      // Выключаем отображение сетки
      showGrid(false);
      // Меняем фон центральной клетки на синий и отображаем в ней "Х"
      setCellValueEx(1, 1, Color.BLUE, "Х", Color.ORANGE, 50);
   }
}

В этом примере игровому полю задается размер 3х3, отключается отображение сетки, и по центру устанавливается оранжевый символ Х размером в половину клетки на синем фоне. Это будет первое, что увидит игрок при запуске игры.