CodeGym/Java курс/All lectures for BG purposes/Гмурнете се дълбоко в двигателя на играта

Гмурнете се дълбоко в двигателя на играта

На разположение

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)съответно на , и .cellColorvaluetextColor

Пример:

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

В този случай за всеки такъв клас трябва да изпълните следните стъпки веднъж:
  1. Отворете RunEdit Configuration
  2. За стойността на VM options въведете следното:
    --module-path ./lib/javafx-sdk-16/lib --add-modules=javafx.controls,javafx.fxml,javafx.base

    ВНИМАНИЕ:

    В последните версии на IntelliJ IDEA полето „VM options“ не се показва по подразбиране. За да го покажете, натиснете ALT+V

  3. Натиснете: ПриложиOK
  4. Стартирайте играта.
Коментари
  • Популярен
  • Нов
  • Стар
Трябва да сте влезли, за да оставите коментар
Тази страница все още няма коментари