1. Lavorare con le celle del campo di gioco
È fantastico poter dividere il campo di gioco in celle. Ma cosa possiamo fare con le cellule stesse?
Per ogni cella del campo di gioco, possiamo impostare:
- colore della cella (il colore di sfondo della cella);
- testo (può essere un testo o un numero);
- colore del testo;
- dimensione del testo come percentuale della dimensione della cella.
Consideriamo i metodi per lavorare con le celle del campo di gioco:
void setCellColor(int x, int y, Color color)
imposta il colore della cella con coordinate (x, y)
uguali a color
.
Esempi:
setCellColor(0, 0, Color.RED);
setCellColor(3, 6, Color.BLACK);
setCellColor(6, 8, Color.NONE);
Color getCellColor(int x, int y)
restituisce il colore della cella con le coordinate (x, y)
.
Esempio:
Color myColor = getCellColor(2, 0);
void setCellValue(int x, int y, String value)
assegna il testo String value
alla cella con coordinate (x, y)
.
Esempi:
setCellValue(3, 3, "text");
setCellValue(0, 8, "W");
setCellValue(4, 1, "2222");
setCellValue(6, 6, "");
String getCellValue(int x, int y)
restituisce il testo contenuto nella cella con coordinate (x, y)
.
Esempi:
String s = getCellValue(3, 3);
System.out.println(getCellValue(4, 1));
void setCellTextSize(int x, int y, int size)
imposta la dimensione del testo nella cella con coordinate (x, y)
, dove size
è l'altezza del testo come percentuale dell'altezza della cella.
Esempio:
setCellTextSize(2, 0, 70); // 70% of the cell height
int getCellTextSize(int x, int y)
restituisce la dimensione del contenuto nella cella con coordinate (x, y)
.
Esempio:
int size = getCellTextSize(2 , 0);
void setCellNumber(int x, int y, int value)
assegna il numero int value
alla cella con le coordinate (x, y)
.
Esempi:
setCellNumber(3, 3, 40);
setCellNumber(0, 8, -8);
setCellNumber(4, 1, 2222);
setCellNumber(6, 6, 0);
int getCellNumber(int x, int y)
restituisce il numero contenuto nella cella con coordinate (x, y)
. Se la cella non contiene un numero, restituisce 0.
Esempi:
int i = getCellNumber(3, 3);
System.out.println(getCellNumber(4, 1));
void setCellTextColor(int x, int y, Color color)
imposta il colore del contenuto (testo) della cella con coordinate (x, y)
.
Esempi:
setCellTextColor(2, 1, Color.GREEN);
setCellTextColor(0, 1, Color.NONE);
Color getCellTextColor(int x, int y)
restituisce il colore del contenuto (testo) della cella con coordinate (x, y)
.
Esempio:
Color textColor = getCellTextColor(1, 3);
Per tua comodità, esistono diversi setCellValueEx()
metodi con diversi set di parametri:
void setCellValueEx(int x, int y, Color cellColor, String value)
imposta il colore di sfondo e il testo della cella con coordinate (x, y)
uguali a cellColor
e value
, rispettivamente.
Esempio:
setCellValueEx(0, 2, Color.BLUE, "56");
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor)
imposta il colore di sfondo, il testo e il colore del testo della cella con coordinate (x, y)
uguali rispettivamente a cellColor
, value
e textColor
.
Esempio:
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN);
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor, int textSize);
imposta il colore di sfondo, il testo, il colore del testo e la dimensione del testo della cella con coordinate (x, y)
uguali rispettivamente a cellColor
, value
, textColor
e textSize
.
Esempio:
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN, 70);
2. Lavorare con il colore
Il motore di gioco CodeGym ha un Color
tipo speciale che contiene valori univoci per 148 colori. Ha anche un NONE
valore speciale che rappresenta l'assenza di colore.
Esempi di lavoro con il colore
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.
Puoi colorare una cella di rosso usando il comando:
setCellColor(0, 2, Color.RED);
Puoi controllare se una cella è di un certo colore con un comando come:
if (getCellColor(0,2) == Color.GREEN)
{
}
A volte potrebbe essere necessario ottenere una matrice di tutti i colori possibili. Per fare questo, usa il values()
metodo.
Esempio:
// An array containing every available color is assigned to the colors variable.
Color[] colors = Color.values();
Ottenere l'indice di un colore nella tavolozza dei colori è molto semplice: basta usare il ordinal()
metodo:
Color color = Color.RED;
int redIndex = color.ordinal(); // Index of the color red
int blueIndex = Color.BLUE.ordinal(); // Index of the color blue
Puoi anche facilmente ottenere un colore dal suo indice:
// The color whose index is 10 in the Color enum is assigned to the color variable.
Color color = Color.values()[10];
3. Finestre di dialogo
Alla fine del gioco, dobbiamo far sapere al giocatore se ha vinto o perso. Per questa e altre occasioni, il motore di gioco CodeGym ha il void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)
metodo speciale, che visualizza una finestra di dialogo con il message
messaggio.
I parametri di questo metodo sono:
cellColor
è il colore di sfondo della finestra di dialogomessage
è il testo del messaggiotextColor
è il colore del testo del messaggiotextSize
è la dimensione del testo del messaggio
La finestra di dialogo si chiude automaticamente se l'utente preme la barra spaziatrice o fa clic sulla finestra di dialogo con il mouse.
Esempio di chiamata a questo metodo:
// Display a dialog box with a message
showMessageDialog(Color.BLACK, "EPIC FAIL", Color.RED, 80);
4. Metodi di utilità
Quando scrivi giochi, userai spesso numeri casuali. Per semplificare l'ottenimento di numeri casuali, puoi utilizzare i metodi di utilità del motore di gioco:
int getRandomNumber(int max)
restituisce un numero casuale da 0
a (max–1)
compreso.
int getRandomNumber(int min, int max)
restituisce un numero casuale da min
a (max–1)
compreso.
5. JDK 11+
Quando si esegue il programma da IntelliJ IDEA, una classe che eredita la classe Game potrebbe generare il seguente errore:
Error: JavaFX runtime components are missing, and are required to run this application
In questo caso, per ciascuna di queste classi, è necessario eseguire questi passaggi una volta:
- Apri Esegui → Modifica configurazione
- Per il valore delle opzioni VM , inserisci quanto segue:
--module-path ./lib/javafx-sdk-16/lib --add-modules=javafx.controls,javafx.fxml,javafx.base
ATTENZIONE:
Nelle versioni recenti di IntelliJ IDEA, il campo "Opzioni VM" non viene visualizzato per impostazione predefinita. Per visualizzarlo, premi ALT+V
- Premere: Applica → OK
- Esegui il gioco.
GO TO FULL VERSION