CodeGym/Curs Java/All lectures for RO purposes/Aprofundare în motorul jocului

Aprofundare în motorul jocului

Disponibil

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.
Comentarii
  • Popular
  • Nou
  • Vechi
Trebuie să fii conectat pentru a lăsa un comentariu
Această pagină nu are încă niciun comentariu