1. Работа с клетками игрового поля
То, что мы можем поделить игровое поле на ячейки — это отлично. А что мы можем делать с самими ячейками?
Каждой клетке игрового поля можно задать:
- цвет клетки (цвет фона ячейки);
- текст (текст или число);
- цвет текста;
- размер текста в процентах относительно размера клетки.
Рассмотрим методы для работы с клетками игрового поля:
void setCellColor(int x, int y, Color color)
– устанавливает клетке с координатами (x, y)
цвет color
.
Примеры:
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)
– устанавливает клетке с координатами (x, y)
цвет фона cellColor
и контент value
.
Пример:
setCellValueEx(0, 2, Color.BLUE, "56");
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor)
– устанавливает клетке с координатами (x, y)
цвет фона cellColor
, контент value
и цвет контента textColor
.
Пример:
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN);
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor, int textSize);
– устанавливает клетке с координатами (x, y)
цвет фона cellColor
, контент value
, цвет контента textColor
и размер контента textSize
.
Пример:
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
- Запускайте игру.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ