JavaRush/Курсы/Java Syntax Pro/Игровой движок

Игровой движок

Открыта

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, отключается отображение сетки, и по центру устанавливается оранжевый символ Х размером в половину клетки на синем фоне. Это будет первое, что увидит игрок при запуске игры.


Комментарии (246)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Grigoryvvv
Уровень 28
Expert
2 августа, 13:20
02.08.2026 / 20 уровень
VladTutter в in the Big Blue Hous
3 марта, 03:04
хотел усовершенствовать... @Override public void initialize() { setScreenSize(8, 3); showGrid(true); String text = "JAVARUSH"; for (int i = 0; i < getScreenWidth(); i++){ String part = String.valueOf(text.charAt(i)); setCellValueEx(i, 1, Color.ORANGE, part);} } ...и не правильно оказывается.
Денис 1C Developer
28 мая, 19:16
Ты талант
yarikk
Уровень 28
16 февраля, 11:00
я написал последнюю задачу через цикл, но компилятор чет не принял
C0N5P1RACY QA Automation Engineer
10 января, 18:45
Вот это ничего себе! Такие задачи, где видишь сам что ты что то создаешь, очень мотивирует идти дальше!
Виктор
Уровень 28
14 октября 2025, 21:01
Отдельное удовольствие установить это всё без плагина самому). Думал пролистать, но походу поборемся.
Alpha
Уровень 42
25 августа 2025, 13:40
Проснулся сегодня очень рано, и может из-за этого с последней задачей у меня были приключения:) Мой воспаленный мозг откуда-то сгенерировал условие по задаче, что мол есть 3x3 игровое поле и надо написать на нем "JAVARUSH" начиная с X:0, Y:1 (). Написал, задача само собой проверку не прошла, долго думал почему, еще раз перечитал условие и там вообще X:8 написано, и в одну строку надо было писать, откуда я взял 3x3 вообще непонятно:))) Далее уже заного ознакомившись с требуемыми условиями, написал через цикл, но гад валидатор не принял решение, плюнул на все и написал как учили на прошлых уроках: setScreenSize(8, 3); AtomicInteger atomicCount = new AtomicInteger(0); Stream<String> stream = Stream.of("J", "A", "V", "A", "R", "U", "S", "H"); stream.forEach(word -> setCellValueEx(atomicCount.incrementAndGet() - 1, 1, Color.ORANGE, word));
Bohdan
Уровень 13
26 января, 18:54
Решение конечно атомная бомба, иногда действительно важно ЗАНОГО перечитать условие
Anonymous #3585174
Уровень 33
25 июля 2025, 14:41
like
15 мая 2025, 13:58
setScreenSize(8, 3);

final String JAVARUSH = "JAVARUSH";
for (int x = 0, y = 1; x < 8; x++) {
    setCellValueEx(x, y, Color.ORANGE, String.valueOf(JAVARUSH.charAt(x)));
}
Lucht I
Уровень 30
2 мая 2025, 07:37
решение проблемы с импортированием В IntelliJ IDEA перейди в File → Project Structure → вкладка Modules → вкладка Dependencies. Нажми на кнопку + → JARs or directories. Выбери файл javarush-engine.jar в папке lib твоего проекта. OK и затем Apply
depresso
Уровень 26
2 февраля 2025, 14:29
Была проблема с тем, что компилятор не видит импорт com.javarush.engine.cell.Game (windows 10) Помогла полная переустановка Intellij idea с удалением всех jdk Затем переустановил ide и все заработало
Emillionaire
Уровень 23
24 апреля 2025, 09:23
Попробую помочь другим с этой же проблемой без удалений. ctrl+alt+shift+S - открыть структуру проекта Там: SDK: - выбрать в поле пункт Javarush SDK (у меня стояло Corretto 21) Language level: - выбрать 17 (у меня изначально стояло 21, с ним не работало) После этого заработало всё. В общем, как я понимаю движок для определенной версии Java. Странно что об этом никто не сказал и не написал четко что выставить.