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


Комментарии (243)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
C0N5P1RACY Уровень 21
10 января 2026
Вот это ничего себе! Такие задачи, где видишь сам что ты что то создаешь, очень мотивирует идти дальше!
Виктор Уровень 25
14 октября 2025
Отдельное удовольствие установить это всё без плагина самому). Думал пролистать, но походу поборемся.
Alpha Уровень 33
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));
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 Уровень 22
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
Спасибо помогло.
Евгений Уровень 37
30 марта 2025
почему при обычном импорте не видел пакет? почему именно так подключить удалось. Это косяк разработчиков или всегда так нужно будет подключать скомпилированный движок?
ShadyLine Уровень 32
10 апреля 2025
если Директории lib нет, что делать?
Alpha Уровень 33
25 августа 2025
Для будущих первопроходцев скорее комментарий. На виртуальной машине развернул новый IDEA, подключил плагин JavaRush и после того как уже создалась структура проекта, скопировал директорию "lib" с библиотекой на рабочую систему.
Anonymous #3186382 Уровень 1
29 ноября 2024
Ноябрь 2024. Ошибка "Метод Main не найден" решается следующим образом: 1. Полное удаление всех версий Java и JavaSdk, какие только найдете на своём компьютере. 2. Удаление папки "C:\Users\Имя_Вашего_Пользователя\javarush". В этой папке есть папка "sdk" со старой версией Java. 3. Удаление и повторная установка IntelliJ IDEA вместе с плагином JavaRush. При повторной установке плагина JavaRush должна заново создастся папка из пункта 2 с актуальной версией "sdk". Всё начнёт работать без всяких JavaFX и настроек VM Option.
melnikovYA Уровень 23
28 ноября 2024
Визуализация игр происходит только в intelij idea? или в браузере тоже можно как-то запустить?