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

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

Java Syntax Pro
19 уровень , 1 лекция
Открыта

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


Комментарии (247)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Vlad Уровень 29
3 марта 2026
хотел усовершенствовать... @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);} } ...и не правильно оказывается.
Денис Уровень 21
28 мая 2026
Ты талант
yarikk Уровень 30
16 февраля 2026
я написал последнюю задачу через цикл, но компилятор чет не принял
C0N5P1RACY Уровень 1
10 января 2026
Вот это ничего себе! Такие задачи, где видишь сам что ты что то создаешь, очень мотивирует идти дальше!
Виктор Уровень 28
14 октября 2025
Отдельное удовольствие установить это всё без плагина самому). Думал пролистать, но походу поборемся.
Alpha Уровень 42
25 августа 2025
Проснулся сегодня очень рано, и может из-за этого с последней задачей у меня были приключения:) Мой воспаленный мозг откуда-то сгенерировал условие по задаче, что мол есть 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 Уровень 1
26 января 2026
Решение конечно атомная бомба, иногда действительно важно ЗАНОГО перечитать условие
Anonymous #3585174 Уровень 33
25 июля 2025
like
15 мая 2025

        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
решение проблемы с импортированием В IntelliJ IDEA перейди в File → Project Structure → вкладка Modules → вкладка Dependencies. Нажми на кнопку + → JARs or directories. Выбери файл javarush-engine.jar в папке lib твоего проекта. OK и затем Apply
depresso Уровень 26
2 февраля 2025
Была проблема с тем, что компилятор не видит импорт com.javarush.engine.cell.Game (windows 10) Помогла полная переустановка Intellij idea с удалением всех jdk Затем переустановил ide и все заработало
Emillionaire Уровень 23
24 апреля 2025
Попробую помочь другим с этой же проблемой без удалений. ctrl+alt+shift+S - открыть структуру проекта Там: SDK: - выбрать в поле пункт Javarush SDK (у меня стояло Corretto 21) Language level: - выбрать 17 (у меня изначально стояло 21, с ним не работало) После этого заработало всё. В общем, как я понимаю движок для определенной версии Java. Странно что об этом никто не сказал и не написал четко что выставить.
Сергей Зайцев Уровень 38
21 декабря 2024
у меня с JavaFX никаких проблем не возникало (2024г) для тех, у кого при импорте com.javarush.engine.cell.Game возникает ошибка и пишет что пакет engine не найден, и структура проекта примерно такая как на скрине ниже (есть папка lib c файлом game-engine.jar) делаем следующее: в правом верхнем углу IDEA шестеренка -> Project Structure -> в Project Settings заходим в Libraries -> жмем на плюсик -> в выпадающем списке выбираем "Java" и указываем путь к файлу game-engine.jar в директории lib в нашем проекте -> Apply -> и теперь можно использовать import com.javarush.engine.cell.Game Как я понял game-engine.jar это уже скомпилированный файл с игровым движком. Вышеуказанным способом мы его подключаем к проекту как внешнюю библиотеку.
GamzalovGR Уровень 2
29 декабря 2024
четко
Anonymous #3504101 Уровень 29
9 февраля 2025
Спасибо помогло.
Евгений Уровень 6
30 марта 2025
почему при обычном импорте не видел пакет? почему именно так подключить удалось. Это косяк разработчиков или всегда так нужно будет подключать скомпилированный движок?
ShadyLine Уровень 51
10 апреля 2025
если Директории lib нет, что делать?
Alpha Уровень 42
25 августа 2025
Для будущих первопроходцев скорее комментарий. На виртуальной машине развернул новый IDEA, подключил плагин JavaRush и после того как уже создалась структура проекта, скопировал директорию "lib" с библиотекой на рабочую систему.