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
У цьому випадку для кожного з таких класів потрібно один раз виконати такі дії:
- Відкрийте меню Run → EditConfiguration
- Уведіть в поле VM options такий рядок:
--module-path ./lib/javafx-sdk-16/lib --add-modules=javafx.controls,javafx.fxml,javafx.base
УВАГА!
У останніх версіях IntelliJ IDEA поле VM options за замовчуванням не відображається. Щоб відобразити його, натисніть Alt + V
- Натисніть Apply → OK
- Запустіть гру.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ