JavaRush /Курси /Java Syntax Zero /Ігровий рушій

Ігровий рушій

Java Syntax Zero
Рівень 20 , Лекція 2
Відкрита

1. Написання першої гри на ігровому рушії

У будь-якої реалізації комп'ютерної гри зі сторони розробника є три стадії:

  1. Ініціалізація гри. Сюди можна віднести різні підготовчі дії: встановлення розміру та промальовування ігрового поля, створення та встановлення ігрових об'єктів у початкове положення, а також будь-які інші дії, які необхідно виконати на початку гри.
  2. Ігровий процес. Сюди можна віднести рух ігрових об'єктів, дії гравця, облік зароблених очок, а також будь-які інші дії, які потрібно виконувати з певною періодичністю або за натисканням кнопок.
  3. Завершення гри. Сюди можна віднести зупинку анімації, повідомлення про перемогу/поразку, а також будь-які інші дії, які необхідно виконати в кінці гри.

Зараз ми послідовно пройдемося по всіх трьох кроках і подивимося, як ігровий рушій CodeGym допоможе зробити цей процес простішим.


2. Ініціалізація гри

Процес ініціалізації гри за допомогою ігрового рушія CodeGym складається всього з двох кроків:

Крок 1: Створюємо основний клас гри

Для створення своєї гри на основі ігрового рушія CodeGym вам потрібно створити клас і успадкувати його від класу Game (com.codegym.engine.cell.Game). Це дасть вашому класу можливість викликати методи ігрового рушія, а рушій отримає можливість викликати методи вашого класу. Приклад:

import com.codegym.engine.cell.Game;

public class MySuperGame extends Game {
  ...
}

Крок 2: Перевизначаємо метод initialize()

У методі initialize() відбуватимуться всі дії, необхідні для старту гри: створення ігрового поля, створення всіх ігрових об'єктів тощо. Вам потрібно просто оголосити цей метод у класі, успадкованому від класу Game. Приклад:

import com.codegym.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.codegym.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. Примітивна програма

Давайте напишемо дуже примітивну гру, яка використовує ігровий рушій CodeGym. Вона буде робити 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, відключається відображення сітки, і по центру встановлюється помаранчевий символ Х розміром у половину клітини на синьому фоні. Це буде перше, що побачить гравець при запуску гри.


Коментарі (11)
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ
7 квітня 2025
Хто стикнувся з проблемою імпорту - перейдіть в структуру проєкту та додайте файл game-engine.jar як набір бібліотек (файл є в структурі проєкту). Після цього все запрацює
Viacheslav B. Рівень 1
9 травня 2024
IDEA - скаржиться Cannot resolve symbol 'javarush'

import com.javarush.engine.cell.Game;
7 квітня 2025
Відкрийте структуру проєкту, там буде файлик з назвою game-engine.jar. Потрібно натиснути на нього правою кнопкою та обрати Add as Library, щоб додати в проєкт як набір бібліотек. Після цього імпорт все побачить.
Pavlo Kezin Рівень 23
26 жовтня 2023
Корочше я здався, так і не зміг налаштувати цю ... Просто вирішив задачі покроково всліпу. "Дякую", що не даєте пропустити цей рівень.
Зепп Бранниган Рівень 1 Moderator
30 жовтня 2023
Встановіть наш новий плагін, будь ласка.
Віталій Рівень 32
7 жовтня 2022
потрбіна допомога, при спробі запуску бачу напис cannot access javafx.application.Application class file for javafx.application.Application not found
Зепп Бранниган Рівень 1 Moderator
7 жовтня 2022
Вам необхідно встановити бібліотеку javafx за цією інструкцією (п.7).
FAUST_ua Рівень 29
6 жовтня 2022
Допогли такі матеріали: 1) відео - https://www.youtube.com/watch?v=Qn5pKWkaGps 2) коментарі - https://javarush.com/help/63540 Хоч і працює але кожен раз треба прописувати під нові задачки. IntelliJ IDEA: Run - Edit configurations - Modify options - Add VM options - code: "--module-path "C:\Program Files\Java\javafx-sdk-19\lib //або ваш подібний" --add-modules javafx.controls,javafx.fxml" Apply - Ok - Run
Artem Рівень 30
29 вересня 2022
Як позбутися цієї помилки? Error: JavaFX runtime components are missing, and are required to run this application
Зепп Бранниган Рівень 1 Moderator
30 вересня 2022
Вам треба встановити бібліотеку javaFX за цією інструкцією (п.7).
21 листопада 2022
Найлегший спосіб це створити новий проект JavaFX, вибрати усі бібліотеки, ініціалізувати плагін JavaRush