1. Arbeiten mit den Zellen des Spielfeldes

Es ist großartig, dass wir das Spielfeld in Zellen unterteilen können. Aber was können wir mit den Zellen selbst machen?

Für jede Zelle des Spielfeldes können wir Folgendes festlegen:

  • Zellenfarbe (die Hintergrundfarbe der Zelle);
  • Text (dies kann Text oder eine Zahl sein);
  • Textfarbe;
  • Textgröße als Prozentsatz der Zellengröße.

Betrachten wir Methoden zum Arbeiten mit den Zellen des Spielfelds:

void setCellColor(int x, int y, Color color)legt die Farbe der Zelle mit den Koordinaten (x, y)fest color.

Beispiele:

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

Color getCellColor(int x, int y)gibt die Farbe der Zelle mit Koordinaten zurück (x, y).

Beispiel:

Color myColor = getCellColor(2, 0);

void setCellValue(int x, int y, String value)Ordnet den Text String valueder Zelle mit Koordinaten zu (x, y).

Beispiele:

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

String getCellValue(int x, int y)gibt den in der Zelle enthaltenen Text mit Koordinaten zurück (x, y).

Beispiele:

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

void setCellTextSize(int x, int y, int size)legt die Größe des Texts in der Zelle mit Koordinaten fest (x, y), wobei sizedie Texthöhe als Prozentsatz der Zellenhöhe angegeben ist.

Beispiel:

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

int getCellTextSize(int x, int y)gibt die Größe des Inhalts in der Zelle mit Koordinaten zurück (x, y).

Beispiel:

int size = getCellTextSize(2 , 0);

void setCellNumber(int x, int y, int value)weist die Nummer int valueder Zelle mit Koordinaten zu (x, y).

Beispiele:

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

int getCellNumber(int x, int y)gibt die in der Zelle enthaltene Zahl mit Koordinaten zurück (x, y). Wenn die Zelle keine Zahl enthält, wird 0 zurückgegeben.

Beispiele:

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

void setCellTextColor(int x, int y, Color color)legt die Farbe des Inhalts (Textes) der Zelle mit Koordinaten fest (x, y).

Beispiele:

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

Color getCellTextColor(int x, int y)gibt die Farbe des Inhalts (Textes) der Zelle mit Koordinaten zurück (x, y).

Beispiel:

Color textColor = getCellTextColor(1, 3);

Zu Ihrer Bequemlichkeit gibt es mehrere setCellValueEx()Methoden mit unterschiedlichen Parametersätzen:

void setCellValueEx(int x, int y, Color cellColor, String value)Legt die Hintergrundfarbe und den Text der Zelle mit den Koordinaten bzw. (x, y)fest .cellColorvalue

Beispiel:

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

void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor)Legt die Hintergrundfarbe, den Text und die Textfarbe der Zelle mit den Koordinaten (x, y), cellColorbzw. valuefest textColor.

Beispiel:

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

void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor, int textSize);Legt die Hintergrundfarbe, den Text, die Textfarbe und die Textgröße der Zelle mit den Koordinaten (x, y), cellColor, valuebzw. textColorfest textSize.

Beispiel:

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


2. Mit Farbe arbeiten

Die CodeGym-Spiel-Engine verfügt über einen speziellen ColorTyp, der eindeutige Werte für 148 Farben enthält. Es hat auch einen besonderen NONEWert, der die Abwesenheit von Farbe darstellt.

Beispiele für die Arbeit mit Farbe

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.

Sie können eine Zelle mit dem folgenden Befehl rot einfärben:

setCellColor(0, 2, Color.RED);

Sie können mit einem Befehl wie dem folgenden überprüfen, ob eine Zelle eine bestimmte Farbe hat:

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

Manchmal müssen Sie möglicherweise eine Reihe aller möglichen Farben erhalten. Verwenden Sie dazu die values()Methode.

Beispiel:

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

Den Index einer Farbe in der Farbpalette zu erhalten ist sehr einfach – verwenden Sie einfach die ordinal()Methode:

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

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

Sie können eine Farbe auch einfach anhand ihres Index ermitteln:

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


3. Dialogfelder

Am Ende des Spiels müssen wir dem Spieler mitteilen, ob er gewonnen oder verloren hat. Für diesen und andere Gelegenheiten verfügt die CodeGym-Spiel-Engine über eine spezielle void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)Methode, die ein Dialogfeld mit der messageMeldung anzeigt.
Die Parameter dieser Methode sind:

  • cellColorist die Hintergrundfarbe des Dialogfelds
  • messageist der Text der Nachricht
  • textColorist die Farbe des Nachrichtentextes
  • textSizeist die Größe des Nachrichtentextes

Das Dialogfeld schließt sich selbst, wenn der Benutzer die Leertaste drückt oder mit der Maus auf das Dialogfeld klickt.

Beispiel für den Aufruf dieser Methode:

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


4. Utility-Methoden

Beim Schreiben von Spielen verwenden Sie häufig Zufallszahlen. Um das Erhalten von Zufallszahlen zu erleichtern, können Sie die Hilfsmethoden der Spiel-Engine verwenden:

int getRandomNumber(int max)gibt eine Zufallszahl von 0bis (max–1)einschließlich zurück.

int getRandomNumber(int min, int max)gibt eine Zufallszahl von minbis (max–1)einschließlich zurück.


5. JDK 11+

Wenn Sie Ihr Programm über IntelliJ IDEA ausführen, generiert eine Klasse, die die Game-Klasse erbt, möglicherweise den folgenden Fehler:

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

In diesem Fall müssen Sie für jede dieser Klassen die folgenden Schritte einmal ausführen:
  1. Öffnen Sie AusführenKonfiguration bearbeiten
  2. Geben Sie als Wert der VM-Optionen Folgendes ein:
    --module-path ./lib/javafx-sdk-16/lib --add-modules=javafx.controls,javafx.fxml,javafx.base

    AUFMERKSAMKEIT:

    In neueren Versionen von IntelliJ IDEA wird das Feld „VM-Optionen“ standardmäßig nicht angezeigt. Um es anzuzeigen, drücken Sie ALT+V

  3. Drücken Sie: ÜbernehmenOK
  4. Führen Sie das Spiel aus.