1. Lucrul cu celulele terenului de joc

Este grozav că putem împărți terenul de joc în celule. Dar ce putem face cu celulele în sine?

Pentru fiecare celulă a terenului de joc, putem seta:

  • culoarea celulei (culoarea de fundal a celulei);
  • text (aceasta poate fi text sau un număr);
  • culoarea textului;
  • dimensiunea textului ca procent din dimensiunea celulei.

Să luăm în considerare metodele de lucru cu celulele terenului de joc:

void setCellColor(int x, int y, Color color)setează culoarea celulei cu coordonatele (x, y)egale cu color.

Exemple:

setCellColor(0, 0, Color.RED);
setCellColor(3, 6, Color.BLACK);
setCellColor(6, 8, Color.NONE);

Color getCellColor(int x, int y)returnează culoarea celulei cu coordonatele (x, y).

Exemplu:

Color myColor = getCellColor(2, 0);

void setCellValue(int x, int y, String value)atribuie textul String valuecelulei cu coordonate (x, y).

Exemple:

setCellValue(3, 3, "text");
setCellValue(0, 8, "W");
setCellValue(4, 1, "2222");
setCellValue(6, 6, "");

String getCellValue(int x, int y)returnează textul conținut în celulă cu coordonatele (x, y).

Exemple:

String s = getCellValue(3, 3);
System.out.println(getCellValue(4, 1));

void setCellTextSize(int x, int y, int size)setează dimensiunea textului din celulă cu coordonatele (x, y), unde sizeeste înălțimea textului ca procent din înălțimea celulei.

Exemplu:

setCellTextSize(2, 0, 70); // 70% of the cell height

int getCellTextSize(int x, int y)returnează dimensiunea conținutului din celulă cu coordonatele (x, y).

Exemplu:

int size = getCellTextSize(2 , 0);

void setCellNumber(int x, int y, int value)atribuie numărul int valuecelulei cu coordonate (x, y).

Exemple:

setCellNumber(3, 3, 40);
setCellNumber(0, 8, -8);
setCellNumber(4, 1, 2222);
setCellNumber(6, 6, 0);

int getCellNumber(int x, int y)returnează numărul conținut în celula cu coordonatele (x, y). Dacă celula nu conține un număr, returnează 0.

Exemple:

int i = getCellNumber(3, 3);
System.out.println(getCellNumber(4, 1));

void setCellTextColor(int x, int y, Color color)setează culoarea conținutului (textului) celulei cu coordonatele (x, y).

Exemple:

setCellTextColor(2, 1, Color.GREEN);
setCellTextColor(0, 1, Color.NONE);

Color getCellTextColor(int x, int y)returnează culoarea conținutului (textului) celulei cu coordonatele (x, y).

Exemplu:

Color textColor = getCellTextColor(1, 3);

Pentru confortul dvs., există mai multe setCellValueEx()metode cu diferite seturi de parametri:

void setCellValueEx(int x, int y, Color cellColor, String value)setează culoarea de fundal și textul celulei cu coordonatele (x, y)egale cu cellColorși value, respectiv.

Exemplu:

setCellValueEx(0, 2, Color.BLUE, "56");

void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor)setează culoarea de fundal, textul și culoarea textului celulei cu coordonatele (x, y)egale cu cellColor, valueși textColor, respectiv.

Exemplu:

setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN);

void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor, int textSize);setează culoarea de fundal, textul, culoarea textului și dimensiunea textului celulei cu coordonatele (x, y)egale cu cellColor, value, textColor, și textSize, respectiv.

Exemplu:

setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN, 70);


2. Lucrul cu culoarea

Motorul de joc CodeGym are un Colortip special care conține valori unice pentru 148 de culori. Are si o NONEvaloare deosebita care reprezinta absenta culorii.

Exemple de lucru cu culoarea

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.

Puteți colora o celulă în roșu folosind comanda:

setCellColor(0, 2, Color.RED);

Puteți verifica dacă o celulă are o anumită culoare cu o comandă ca:

if (getCellColor(0,2) == Color.GREEN)
{
}

Uneori poate fi necesar să obțineți o gamă de toate culorile posibile. Pentru a face acest lucru, utilizați values()metoda.

Exemplu:

// An array containing every available color is assigned to the colors variable.
Color[] colors = Color.values();

Obținerea indexului unei culori în paleta de culori este foarte ușor de făcut - trebuie doar să utilizați ordinal()metoda:

Color color = Color.RED;
int redIndex = color.ordinal(); // Index of the color red

int blueIndex = Color.BLUE.ordinal(); // Index of the color blue

De asemenea, puteți obține cu ușurință o culoare după indicele ei:

// The color whose index is 10 in the Color enum is assigned to the color variable.
Color color = Color.values()[10];


3. Casete de dialog

La sfârșitul jocului, trebuie să anunțăm jucătorul dacă a câștigat sau a pierdut. Pentru aceasta și alte ocazii, motorul de joc CodeGym are void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)metoda specială, care afișează o casetă de dialog cu messagemesajul.
Parametrii acestei metode sunt:

  • cellColoreste culoarea de fundal a casetei de dialog
  • messageeste textul mesajului
  • textColoreste culoarea textului mesajului
  • textSizeeste dimensiunea textului mesajului

Caseta de dialog se închide singură dacă utilizatorul apasă pe bara de spațiu sau face clic pe caseta de dialog cu mouse-ul.

Exemplu de apelare a acestei metode:

// Display a dialog box with a message
showMessageDialog(Color.BLACK, "EPIC FAIL", Color.RED, 80);


4. Metode de utilitate

Când scrieți jocuri, veți folosi frecvent numere aleatorii. Pentru a obține mai ușor numere aleatorii, puteți utiliza metodele utilitare ale motorului de joc:

int getRandomNumber(int max)returnează un număr aleatoriu de la 0până la (max–1)inclusiv.

int getRandomNumber(int min, int max)returnează un număr aleatoriu de la minpână la (max–1)inclusiv.


5. JDK 11+

Când rulați programul din IntelliJ IDEA, o clasă care moștenește clasa Joc poate genera următoarea eroare:

Error: JavaFX runtime components are missing, and are required to run this application

În acest caz, pentru fiecare astfel de clasă, trebuie să efectuați acești pași o dată:
  1. Deschideți RunEditConfiguration
  2. Pentru valoarea opțiunilor VM , introduceți următoarele:
    --module-path ./lib/javafx-sdk-16/lib --add-modules=javafx.controls,javafx.fxml,javafx.base

    ATENŢIE:

    În versiunile recente ale IntelliJ IDEA, câmpul „Opțiuni VM” nu este afișat implicit. Pentru a-l afișa, apăsați ALT+V

  3. Apăsați: AplicațiOK
  4. Rulați jocul.