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 value
der 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 size
die 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 value
der 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 .cellColor
value
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)
, cellColor
bzw. value
fest 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
, value
bzw. textColor
fest textSize
.
Beispiel:
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN, 70);
2. Mit Farbe arbeiten
Die CodeGym-Spiel-Engine verfügt über einen speziellen Color
Typ, der eindeutige Werte für 148 Farben enthält. Es hat auch einen besonderen NONE
Wert, 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 message
Meldung anzeigt.
Die Parameter dieser Methode sind:
cellColor
ist die Hintergrundfarbe des Dialogfeldsmessage
ist der Text der NachrichttextColor
ist die Farbe des NachrichtentextestextSize
ist 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 0
bis (max–1)
einschließlich zurück.
int getRandomNumber(int min, int max)
gibt eine Zufallszahl von min
bis (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:
- Öffnen Sie Ausführen → Konfiguration bearbeiten
- 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
- Drücken Sie: Übernehmen → OK
- Führen Sie das Spiel aus.
GO TO FULL VERSION