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);

20
Задача
Java Syntax Zero,  20 рівень3 лекція
Недоступна
Рахуємо клітини
Перед тобою поле 10x10, в якому у випадковому порядку розміщено клітини зеленого кольору, а в них — числа. Щоб побачити це, можеш запустити програму. Твоє завдання — реалізувати метод showResult(), який має зробити таке: Обчислити суму всіх чисел у зелених клітинах і вивести в консоль: Сума всіх чи

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];

20
Задача
Java Syntax Zero,  20 рівень3 лекція
Недоступна
Кольори веселки
Попрацюймо з методом setCellColor(int, int, Color), який зафарбовуватиме клітину за переданими координатами. Розпочнімо малювати веселку. Потрібно створити ігрове поле розміром 10x7 у методі initialize() і зафарбувати кожен рядок у свій колір за допомогою методу setCellColor(int, int, Color). Порядо

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);

20
Задача
Java Syntax Zero,  20 рівень3 лекція
Недоступна
Діалогові вікна
Реалізуймо відображення діалогового вікна з текстом. У разі натискання лівої кнопки миші виводимо текст "Ви виграли" зеленого кольору, а в разі натискання правої кнопки миші — "Ви програли" червоного кольору. Для того щоб працювати з натисканням кнопок миші, потрібно перевизначити методи onMouseLef

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. Запустіть гру.