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 value
celulei 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 size
este î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 value
celulei 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 Color
tip special care conține valori unice pentru 148 de culori. Are si o NONE
valoare 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 message
mesajul.
Parametrii acestei metode sunt:
cellColor
este culoarea de fundal a casetei de dialogmessage
este textul mesajuluitextColor
este culoarea textului mesajuluitextSize
este 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 0
până la (max–1)
inclusiv.
int getRandomNumber(int min, int max)
returnează un număr aleatoriu de la min
pâ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ă:
- Deschideți Run → EditConfiguration
- 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
- Apăsați: Aplicați → OK
- Rulați jocul.
GO TO FULL VERSION