1. Робота з клітинами ігрового поля

Можливість поділити ігрове поле на клітини — це чудово. А що можна робити безпосередньо з клітинами?

Для кожної клітині ігрового поля можна задати:

  • колір клітини (колір її фону);
  • вміст (текст або число);
  • колір вмісту;
  • розмір вмісту у відсотках від розміру клітини.

Розгляньмо методи роботи з клітинами ігрового поля:

void setCellColor(int x, int y, Color color) — задає колір color клітини з координатами (x, y).

Приклади:

setCellColor(0, 0, Color.RED);
setCellColor(3, 6, Color.BLACK);
setCellColor(6, 8, Color.NONE);

Color getCellColor(int x, int y) — повертає колір клітини з координатами (x, y).

Приклад:

Color myColor = getCellColor(2, 0);

void setCellValue(int x, int y, String value) — поміщає в клітину з координатами (x, y) текст value.

Приклади:

setCellValue(3, 3, "text");
setCellValue(0, 8, "W");
setCellValue(4, 1, "2222");
setCellValue(6, 6, "");

String getCellValue(int x, int y) — повертає текст, який міститься в клітині з координатами (x, y).

Приклади:

String s = getCellValue(3, 3);
System.out.println(getCellValue(4, 1));

void setCellTextSize(int x, int y, int size) — задає розмір вмісту клітини з координатами (x, y). size — висота тексту у відсотках від висоти клітини.

Приклад:

setCellTextSize(2, 0, 70); // 70% висоти клітини

int getCellTextSize(int x, int y) — повертає розмір вмісту клітини з координатами (x, y).

Приклад:

int size = getCellTextSize(2 , 0);

void setCellNumber(int x, int y, int value) — поміщає в клітину з координатами (x, y) число value.

Приклади:

setCellNumber(3, 3, 40);
setCellNumber(0, 8, -8);
setCellNumber(4, 1, 2222);
setCellNumber(6, 6, 0);

int getCellNumber(int x, int y) — повертає число, що міститься в клітині з координатами (x, y). Якщо в клітині міститься не число, повертає 0.

Приклади:

int i = getCellNumber(3, 3);
System.out.println(getCellNumber(4, 1));

void setCellTextColor(int x, int y, Color color) — задає колір вмісту (тексту) в клітині з координатами (x, y).

Приклади:

setCellTextColor(2, 1, Color.GREEN);
setCellTextColor(0, 1, Color.NONE);

Color getCellTextColor(int x, int y) — повертає колір вмісту (тексту) в клітині з координатами (x, y).

Приклад:

Color textColor = getCellTextColor(1, 3);

Для зручності є декілька методів setCellValueEx() з різними наборами параметрів:

void setCellValueEx(int x, int y, Color cellColor, String value) — задає колір фону cellColor і вміст value клітини з координатами (x, y).

Приклад:

setCellValueEx(0, 2, Color.BLUE, "56");

void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor) — задає колір фону cellColor, вміст value та колір вмісту textColor клітини з координатами (x, y).

Приклад:

setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN);

void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor, int textSize); — задає колір фону cellColor, вміст value, колір вмісту textColor і розмір вмісту textSize клітини з координатами (x, y).

Приклад:

setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN, 70);


2. Робота з кольором

Ігровий рушій JavaRush має спеціальний тип Color, який містить унікальні значення 148 кольорів. А ще спеціальне значення NONE (відсутність кольору).

Приклад роботи з кольором:

Color myColor = Color.WHITE;  // змінній myColor присвоюється білий колір.
Color redColor = Color.RED; // змінній redColor присвоюється червоний колір.
Color blueColor = Color.BLUE; // змінній blueColor присвоюється синій колір.

Зафарбувати клітину в червоний колір можна за допомогою команди:

setCellColor(0, 2, Color.RED);

Перевірити, чи має клітина певний колір, допоможе команда:

if (getCellColor(0,2) == Color.GREEN)
{
}

Часом може виникнути потреба отримати масив усіх існуючих кольорів. Для цього використовуйте метод values().

Наприклад:

// змінній colors присвоюється масив, який містить усі доступні кольори.
Color[] colors = Color.values();

Отримати номер кольору в палітрі кольорів дуже просто: для цього слід використовувати метод ordinal():

Color color = Color.RED;
int redIndex = color.ordinal();  // Номер червоного кольору

int blueIndex = Color.BLUE.ordinal(); // Номер синього кольору

Також ви легко можете отримати колір за його номером:

// змінній color присвоюється колір з індексом 10 з enum Color.
Color color = Color.values()[10];


3. Діалогові вікна

Після закінчення гри гравця слід повідомити про перемогу або поразку. На цей та інші випадки ігровий рушій JavaRush має спеціальний метод
void showMessageDialog(Color cellColor, String message, Color textColor, int textSize), який виводить на ігровий екран діалогове вікно з повідомленням message. Параметри цього методу такі:

  • cellColor — колір фону діалогового вікна
  • message — текст повідомлення
  • textColor — колір тексту повідомлення
  • textSize — розмір тексту повідомлення

Діалогове вікно закривається саме, коли користувач натисне пробіл або клацне в ньому мишею.

Приклад виклику такого методу:

// відображаємо на екрані діалогове вікно з повідомленням у ньому
showMessageDialog(Color.BLACK, "EPIC FAIL", Color.RED, 80);


4. Утилітні методи

Під час написання ігор часто застосовуються випадкові числа. Щоб спростити процес отримання випадкових чисел, можна використовувати утилітні методи рушія:

int getRandomNumber(int max) — повертає випадкове ціле число від 0 до (max–1) включно.

int getRandomNumber(int min, int max) – повертає випадкове ціле число від min до (max–1) включно.


5. JDK 11+

Під час запуску з IntelliJ IDEA такого класу, який успадковано від класу Game, можна отримати таке повідомлення про помилку:

Error: JavaFX runtime components are missing, and are required to run this application

У цьому випадку для кожного з таких класів потрібно один раз виконати такі дії:
  1. Відкрийте меню RunEditConfiguration
  2. Уведіть в поле VM options такий рядок:
    --module-path ./lib/javafx-sdk-16/lib --add-modules=javafx.controls,javafx.fxml,javafx.base

    УВАГА!

    У останніх версіях IntelliJ IDEA поле VM options за замовчуванням не відображається. Щоб відобразити його, натисніть Alt&nbsp+&nbspV

  3. Натисніть ApplyOK
  4. Запустіть гру.