1. Werken met de cellen van het speelveld
Het is mooi dat we het speelveld kunnen opdelen in cellen. Maar wat kunnen we doen met de cellen zelf?
Voor elke cel van het speelveld kunnen we instellen:
- celkleur (de achtergrondkleur van de cel);
- tekst (dit kan tekst of een cijfer zijn);
- tekst kleur;
- tekstgrootte als percentage van de celgrootte.
Laten we eens kijken naar methoden om met de cellen van het speelveld te werken:
void setCellColor(int x, int y, Color color)
stelt de kleur van de cel in met coördinaten (x, y)
gelijk aan color
.
Voorbeelden:
setCellColor(0, 0, Color.RED);
setCellColor(3, 6, Color.BLACK);
setCellColor(6, 8, Color.NONE);
Color getCellColor(int x, int y)
geeft de kleur van de cel met coördinaten terug (x, y)
.
Voorbeeld:
Color myColor = getCellColor(2, 0);
void setCellValue(int x, int y, String value)
wijst de tekst toe String value
aan de cel met coördinaten (x, y)
.
Voorbeelden:
setCellValue(3, 3, "text");
setCellValue(0, 8, "W");
setCellValue(4, 1, "2222");
setCellValue(6, 6, "");
String getCellValue(int x, int y)
geeft de tekst in de cel met coördinaten terug (x, y)
.
Voorbeelden:
String s = getCellValue(3, 3);
System.out.println(getCellValue(4, 1));
void setCellTextSize(int x, int y, int size)
stelt de grootte van de tekst in de cel in met coördinaten (x, y)
, waar size
is de teksthoogte als een percentage van de celhoogte.
Voorbeeld:
setCellTextSize(2, 0, 70); // 70% of the cell height
int getCellTextSize(int x, int y)
geeft de grootte van de inhoud in de cel met coördinaten terug (x, y)
.
Voorbeeld:
int size = getCellTextSize(2 , 0);
void setCellNumber(int x, int y, int value)
wijst het nummer toe int value
aan de cel met coördinaten (x, y)
.
Voorbeelden:
setCellNumber(3, 3, 40);
setCellNumber(0, 8, -8);
setCellNumber(4, 1, 2222);
setCellNumber(6, 6, 0);
int getCellNumber(int x, int y)
geeft het getal in de cel met coördinaten terug (x, y)
. Als de cel geen getal bevat, wordt 0 geretourneerd.
Voorbeelden:
int i = getCellNumber(3, 3);
System.out.println(getCellNumber(4, 1));
void setCellTextColor(int x, int y, Color color)
stelt de kleur van de inhoud (tekst) van de cel in met coördinaten (x, y)
.
Voorbeelden:
setCellTextColor(2, 1, Color.GREEN);
setCellTextColor(0, 1, Color.NONE);
Color getCellTextColor(int x, int y)
geeft de kleur van de inhoud (tekst) van de cel met coördinaten terug (x, y)
.
Voorbeeld:
Color textColor = getCellTextColor(1, 3);
Voor uw gemak zijn er meerdere setCellValueEx()
methoden met verschillende parametersets:
void setCellValueEx(int x, int y, Color cellColor, String value)
stelt de achtergrondkleur en tekst van de cel in met coördinaten (x, y)
gelijk aan respectievelijk cellColor
en value
.
Voorbeeld:
setCellValueEx(0, 2, Color.BLUE, "56");
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor)
stelt de achtergrondkleur, tekst en tekstkleur van de cel in met coördinaten (x, y)
die gelijk zijn aan respectievelijk cellColor
, value
, en textColor
.
Voorbeeld:
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN);
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor, int textSize);
stelt de achtergrondkleur, tekst, tekstkleur en tekstgrootte van de cel in met coördinaten die (x, y)
gelijk zijn aan respectievelijk cellColor
, value
, textColor
en textSize
.
Voorbeeld:
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN, 70);
2. Werken met kleur
De CodeGym-game-engine heeft een speciaal Color
type dat unieke waarden bevat voor 148 kleuren. Het heeft ook een speciale NONE
waarde die de afwezigheid van kleur vertegenwoordigt.
Voorbeelden van werken met kleur
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.
U kunt een cel rood kleuren met de opdracht:
setCellColor(0, 2, Color.RED);
U kunt controleren of een cel een bepaalde kleur heeft met een commando als:
if (getCellColor(0,2) == Color.GREEN)
{
}
Soms moet u een reeks van elke mogelijke kleur krijgen. Gebruik hiervoor de values()
methode.
Voorbeeld:
// An array containing every available color is assigned to the colors variable.
Color[] colors = Color.values();
Het is heel eenvoudig om de index van een kleur in het kleurenpalet te krijgen - gebruik gewoon de 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
U kunt ook gemakkelijk een kleur opvragen via de index:
// The color whose index is 10 in the Color enum is assigned to the color variable.
Color color = Color.values()[10];
3. Dialoogvensters
Aan het einde van het spel moeten we de speler laten weten of hij of zij heeft gewonnen of verloren. Voor deze en andere gelegenheden heeft de CodeGym-game-engine de speciale void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)
methode, die een dialoogvenster met het message
bericht weergeeft.
De parameters van deze methode zijn:
cellColor
is de achtergrondkleur van het dialoogvenstermessage
is de tekst van het berichttextColor
is de kleur van de tekst van het berichttextSize
is de grootte van de tekst van het bericht
Het dialoogvenster sluit zichzelf als de gebruiker op de spatiebalk drukt of met de muis op het dialoogvenster klikt.
Voorbeeld van het aanroepen van deze methode:
// Display a dialog box with a message
showMessageDialog(Color.BLACK, "EPIC FAIL", Color.RED, 80);
4. Hulpmethoden
Bij het schrijven van spellen gebruik je vaak willekeurige getallen. Om het gemakkelijker te maken om willekeurige getallen te krijgen, kunt u de hulpprogramma's van de game-engine gebruiken:
int getRandomNumber(int max)
geeft een willekeurig getal terug van 0
tot en met (max–1)
.
int getRandomNumber(int min, int max)
geeft een willekeurig getal terug van min
tot en met (max–1)
.
5. JDK 11+
Wanneer u uw programma uitvoert vanuit IntelliJ IDEA, kan een klasse die de klasse Game overerft de volgende fout genereren:
Error: JavaFX runtime components are missing, and are required to run this application
In dit geval moet u voor elke dergelijke klasse deze stappen één keer uitvoeren:
- Open Uitvoeren → Configuratie bewerken
- Voor de waarde van VM-opties voert u het volgende in:
--module-path ./lib/javafx-sdk-16/lib --add-modules=javafx.controls,javafx.fxml,javafx.base
AANDACHT:
In recente versies van IntelliJ IDEA wordt het veld "VM-opties" niet standaard weergegeven. Druk op ALT+V om het weer te geven
- Druk op: Toepassen → OK
- Voer het spel uit.
GO TO FULL VERSION