CodeGym/Java Course/All lectures for IT purposes/Immergiti nel motore di gioco

Immergiti nel motore di gioco

Disponibile

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 valuealla 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 valuealla 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 cellColore 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, valuee 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, textColore textSize.

Esempio:

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


2. Lavorare con il colore

Il motore di gioco CodeGym ha un Colortipo speciale che contiene valori univoci per 148 colori. Ha anche un NONEvalore 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 messagemessaggio.
I parametri di questo metodo sono:

  • cellColorè il colore di sfondo della finestra di dialogo
  • messageè il testo del messaggio
  • textColorè il colore del testo del messaggio
  • textSizeè 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 0a (max–1)compreso.

int getRandomNumber(int min, int max)restituisce un numero casuale da mina (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:
  1. Apri EseguiModifica configurazione
  2. 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

  3. Premere: ApplicaOK
  4. Esegui il gioco.
Commenti
  • Popolari
  • Nuovi
  • Vecchi
Devi avere effettuato l'accesso per lasciare un commento
Questa pagina non ha ancora commenti