1. Travailler avec les cellules du terrain de jeu

C'est formidable que nous puissions diviser le terrain de jeu en cellules. Mais que pouvons-nous faire avec les cellules elles-mêmes ?

Pour chaque cellule du terrain de jeu, nous pouvons définir :

  • la couleur de la cellule (la couleur d'arrière-plan de la cellule) ;
  • texte (il peut s'agir de texte ou d'un nombre) ;
  • couleur du texte ;
  • taille du texte en pourcentage de la taille de la cellule.

Considérons les méthodes de travail avec les cellules du terrain de jeu:

void setCellColor(int x, int y, Color color)définit la couleur de la cellule avec des coordonnées (x, y)égales à color.

Exemples:

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

Color getCellColor(int x, int y)renvoie la couleur de la cellule de coordonnées (x, y).

Exemple:

Color myColor = getCellColor(2, 0);

void setCellValue(int x, int y, String value)attribue le texte dans String valuela cellule avec les coordonnées (x, y).

Exemples:

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

String getCellValue(int x, int y)renvoie le texte contenu dans la cellule avec les coordonnées (x, y).

Exemples:

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

void setCellTextSize(int x, int y, int size)définit la taille du texte dans la cellule avec les coordonnées (x, y), où sizeest la hauteur du texte en pourcentage de la hauteur de la cellule.

Exemple:

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

int getCellTextSize(int x, int y)renvoie la taille du contenu de la cellule avec les coordonnées (x, y).

Exemple:

int size = getCellTextSize(2 , 0);

void setCellNumber(int x, int y, int value)attribue le numéro int valueà la cellule avec les coordonnées (x, y).

Exemples:

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

int getCellNumber(int x, int y)renvoie le nombre contenu dans la cellule de coordonnées (x, y). Si la cellule ne contient pas de nombre, elle renvoie 0.

Exemples:

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

void setCellTextColor(int x, int y, Color color)définit la couleur du contenu (texte) de la cellule avec des coordonnées (x, y).

Exemples:

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

Color getCellTextColor(int x, int y)renvoie la couleur du contenu (texte) de la cellule de coordonnées (x, y).

Exemple:

Color textColor = getCellTextColor(1, 3);

Pour votre commodité, il existe plusieurs setCellValueEx()méthodes avec différents ensembles de paramètres :

void setCellValueEx(int x, int y, Color cellColor, String value)définit la couleur d'arrière-plan et le texte de la cellule avec des coordonnées (x, y)égales à cellColoret value, respectivement.

Exemple:

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

void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor)définit la couleur d'arrière-plan, le texte et la couleur du texte de la cellule avec des coordonnées (x, y)égales à cellColor, valueet textColor, respectivement.

Exemple:

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

void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor, int textSize);définit la couleur d'arrière-plan, le texte, la couleur du texte et la taille du texte de la cellule avec des coordonnées (x, y)égales à cellColor, value, textColoret textSize, respectivement.

Exemple:

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


2. Travailler avec la couleur

Le moteur de jeu CodeGym a un Colortype spécial qui contient des valeurs uniques pour 148 couleurs. Il a également une valeur spéciale NONEqui représente l'absence de couleur.

Exemples de travail avec la couleur

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.

Vous pouvez colorer une cellule en rouge à l'aide de la commande :

setCellColor(0, 2, Color.RED);

Vous pouvez vérifier si une cellule est d'une certaine couleur avec une commande comme :

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

Parfois, vous devrez peut-être obtenir un tableau de toutes les couleurs possibles. Pour ce faire, utilisez la values()méthode.

Exemple:

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

Obtenir l'index d'une couleur dans la palette de couleurs est très facile à faire — utilisez simplement la ordinal()méthode :

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

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

Vous pouvez aussi facilement obtenir une couleur par son indice :

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


3. Boîtes de dialogue

À la fin du jeu, nous devons faire savoir au joueur s'il a gagné ou perdu. Pour cette occasion et d'autres, le moteur de jeu CodeGym a la void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)méthode spéciale, qui affiche une boîte de dialogue avec le messagemessage.
Les paramètres de cette méthode sont :

  • cellColorest la couleur de fond de la boîte de dialogue
  • messageest le texte du message
  • textColorest la couleur du texte du message
  • textSizeest la taille du texte du message

La boîte de dialogue se ferme si l'utilisateur appuie sur la barre d'espace ou clique sur la boîte de dialogue avec la souris.

Exemple d'appel de cette méthode :

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


4. Méthodes utilitaires

Lorsque vous écrivez des jeux, vous utiliserez souvent des nombres aléatoires. Pour faciliter l'obtention de nombres aléatoires, vous pouvez utiliser les méthodes utilitaires du moteur de jeu :

int getRandomNumber(int max)renvoie un nombre aléatoire de 0à (max–1)inclus.

int getRandomNumber(int min, int max)renvoie un nombre aléatoire de minà (max–1)inclus.


5. JDK 11+

Lors de l'exécution de votre programme depuis IntelliJ IDEA, une classe qui hérite de la classe Game peut générer l'erreur suivante :

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

Dans ce cas, pour chacune de ces classes, vous devez effectuer ces étapes une fois :
  1. Ouvrez ExécuterModifier la configuration
  2. Pour la valeur des options de VM , saisissez ce qui suit :
    --module-path ./lib/javafx-sdk-16/lib --add-modules=javafx.controls,javafx.fxml,javafx.base

    ATTENTION:

    Dans les versions récentes d'IntelliJ IDEA, le champ "Options VM" n'est pas affiché par défaut. Pour l'afficher, appuyez sur ALT+V

  3. Appuyez sur : AppliquerOK
  4. Exécutez le jeu.