1. Работа с клетките на игралното поле
Чудесно е, че можем да разделим игралното поле на клетки. Но Howво можем да направим със самите клетки?
За всяка клетка от игралното поле можем да зададем:
- цвят на клетката (цвят на фона на клетката);
- текст (това може да бъде текст or число);
- цвят на текста;
- размер на текста като процент от размера на клетката.
Нека разгледаме методите за работа с клетките на игралното поле:
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)
присвоява текста в String value
клетката с координати (x, y)
.
Примери:
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% of the cell height
int getCellTextSize(int x, int y)
връща размера на съдържанието в клетката с координати (x, y)
.
Пример:
int size = getCellTextSize(2 , 0);
void setCellNumber(int x, int y, int value)
присвоява номера int value
на клетката с координати (x, y)
.
Примери:
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. Работа с цвят
Игровият двигател CodeGym има специален Color
тип, който съдържа уникални стойности за 148 цвята. Освен това има специална NONE
стойност, която представлява липсата на цвят.
Примери за работа с цвят
Color myColor = Color.WHITE; // The color white is assigned to the myColor variable.
Color redColor = Color.RED; // The color red is assigned to the redColor variable.
Color blueColor = Color.BLUE; // The color blue is assigned to the blueColor variable.
Можете да оцветите клетка в червено с помощта на командата:
setCellColor(0, 2, Color.RED);
Можете да проверите дали дадена клетка е с определен цвят с команда като:
if (getCellColor(0,2) == Color.GREEN)
{
}
Понякога може да се наложи да вземете масив от всеки възможен цвят. За да направите това, използвайте values()
метода.
Пример:
// An array containing every available color is assigned to the colors variable.
Color[] colors = Color.values();
Получаването на индекс на цвят в цветовата палитра е много лесно - просто използвайте метода ordinal()
:
Color color = Color.RED;
int redIndex = color.ordinal(); // Index of the color red
int blueIndex = Color.BLUE.ordinal(); // Index of the color blue
Можете също така лесно да получите цвят по неговия индекс:
// The color whose index is 10 in the Color enum is assigned to the color variable.
Color color = Color.values()[10];
3. Диалогови прозорци
В края на играта трябва да уведомим играча дали е спечелил or загубил. За този и други случаи игровият двигател на CodeGym има специален void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)
метод, който показва диалогов прозорец със message
съобщението.
Параметрите на този метод са:
cellColor
е цветът на фона на диалоговия прозорецmessage
е текстът на съобщениетоtextColor
е цветът на текста на съобщениетоtextSize
е размерът на текста на съобщението
Диалоговият прозорец се затваря сам, ако потребителят натисне интервала or щракне върху диалоговия прозорец с мишката.
Пример за извикване на този метод:
// Display a dialog box with a message
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 → Edit Configuration
- За стойността на VM options въведете следното:
--module-path ./lib/javafx-sdk-16/lib --add-modules=javafx.controls,javafx.fxml,javafx.base
ВНИМАНИЕ:
В последните версии на IntelliJ IDEA полето „VM options“ не се показва по подразбиране. За да го покажете, натиснете ALT+V
- Натиснете: Приложи → OK
- Стартирайте играта.
GO TO FULL VERSION