1. Arbejde med cellerne på banen
Det er dejligt, at vi kan opdele spillefeltet i celler. Men hvad kan vi gøre med selve cellerne?
For hver celle på spillefeltet kan vi indstille:
- cellefarve (cellens baggrundsfarve);
- tekst (dette kan være tekst eller et tal);
- tekst farve;
- tekststørrelse som en procentdel af cellestørrelsen.
Lad os overveje metoder til at arbejde med cellerne på spillefeltet:
void setCellColor(int x, int y, Color color)
indstiller farven på cellen med koordinater (x, y)
lig med color
.
Eksempler:
setCellColor(0, 0, Color.RED);
setCellColor(3, 6, Color.BLACK);
setCellColor(6, 8, Color.NONE);
Color getCellColor(int x, int y)
returnerer farven på cellen med koordinater (x, y)
.
Eksempel:
Color myColor = getCellColor(2, 0);
void setCellValue(int x, int y, String value)
tildeler teksten String value
til cellen med koordinater (x, y)
.
Eksempler:
setCellValue(3, 3, "text");
setCellValue(0, 8, "W");
setCellValue(4, 1, "2222");
setCellValue(6, 6, "");
String getCellValue(int x, int y)
returnerer teksten i cellen med koordinater (x, y)
.
Eksempler:
String s = getCellValue(3, 3);
System.out.println(getCellValue(4, 1));
void setCellTextSize(int x, int y, int size)
indstiller størrelsen på teksten i cellen med koordinater (x, y)
, hvor size
er teksthøjden som en procentdel af cellehøjden.
Eksempel:
setCellTextSize(2, 0, 70); // 70% of the cell height
int getCellTextSize(int x, int y)
returnerer størrelsen af indholdet i cellen med koordinater (x, y)
.
Eksempel:
int size = getCellTextSize(2 , 0);
void setCellNumber(int x, int y, int value)
tildeler nummeret int value
til cellen med koordinater (x, y)
.
Eksempler:
setCellNumber(3, 3, 40);
setCellNumber(0, 8, -8);
setCellNumber(4, 1, 2222);
setCellNumber(6, 6, 0);
int getCellNumber(int x, int y)
returnerer tallet indeholdt i cellen med koordinater (x, y)
. Hvis cellen ikke indeholder et tal, returnerer den 0.
Eksempler:
int i = getCellNumber(3, 3);
System.out.println(getCellNumber(4, 1));
void setCellTextColor(int x, int y, Color color)
indstiller farven på cellens indhold (tekst) med koordinater (x, y)
.
Eksempler:
setCellTextColor(2, 1, Color.GREEN);
setCellTextColor(0, 1, Color.NONE);
Color getCellTextColor(int x, int y)
returnerer farven på cellens indhold (tekst) med koordinater (x, y)
.
Eksempel:
Color textColor = getCellTextColor(1, 3);
For nemheds skyld er der flere setCellValueEx()
metoder med forskellige sæt parametre:
void setCellValueEx(int x, int y, Color cellColor, String value)
indstiller cellens baggrundsfarve og tekst med koordinater (x, y)
lig med henholdsvis cellColor
og value
.
Eksempel:
setCellValueEx(0, 2, Color.BLUE, "56");
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor)
indstiller cellens baggrundsfarve, tekst og tekstfarve med koordinater (x, y)
lig med henholdsvis cellColor
, value
, og .textColor
Eksempel:
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN);
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor, int textSize);
indstiller cellens baggrundsfarve, tekst, tekstfarve og tekststørrelse med koordinater (x, y)
lig med henholdsvis cellColor
, value
, textColor
, og textSize
.
Eksempel:
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN, 70);
2. Arbejde med farve
CodeGym-spilmotoren har en speciel Color
type, der indeholder unikke værdier for 148 farver. Det har også en særlig NONE
værdi, der repræsenterer fraværet af farve.
Eksempler på arbejde med farver
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.
Du kan farve en celle rød ved at bruge kommandoen:
setCellColor(0, 2, Color.RED);
Du kan kontrollere, om en celle har en bestemt farve med en kommando som:
if (getCellColor(0,2) == Color.GREEN)
{
}
Nogle gange skal du muligvis få en række af alle mulige farver. For at gøre dette skal du bruge values()
metoden.
Eksempel:
// An array containing every available color is assigned to the colors variable.
Color[] colors = Color.values();
At få en farves indeks i farvepaletten er meget let at gøre - bare brug ordinal()
metoden:
Color color = Color.RED;
int redIndex = color.ordinal(); // Index of the color red
int blueIndex = Color.BLUE.ordinal(); // Index of the color blue
Du kan også nemt få en farve ved dens indeks:
// The color whose index is 10 in the Color enum is assigned to the color variable.
Color color = Color.values()[10];
3. Dialogbokse
I slutningen af spillet skal vi fortælle spilleren, om han eller hun har vundet eller tabt. Til denne og andre lejligheder har CodeGym-spilmotoren den specielle void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)
metode, som viser en dialogboks med message
beskeden.
Parametrene for denne metode er:
cellColor
er dialogboksens baggrundsfarvemessage
er teksten i beskedentextColor
er farven på teksten i beskedentextSize
er størrelsen på teksten i beskeden
Dialogboksen lukker sig selv, hvis brugeren trykker på mellemrumstasten eller klikker på dialogboksen med musen.
Eksempel på at kalde denne metode:
// Display a dialog box with a message
showMessageDialog(Color.BLACK, "EPIC FAIL", Color.RED, 80);
4. Nyttemetoder
Når du skriver spil, bruger du ofte tilfældige tal. For at gøre det nemmere at få tilfældige tal, kan du bruge spilmotorens hjælpemetoder:
int getRandomNumber(int max)
returnerer et tilfældigt tal fra 0
til (max–1)
inklusive.
int getRandomNumber(int min, int max)
returnerer et tilfældigt tal fra min
til (max–1)
inklusive.
5. JDK 11+
Når du kører dit program fra IntelliJ IDEA, kan en klasse, der arver Game-klassen, generere følgende fejl:
Error: JavaFX runtime components are missing, and are required to run this application
I dette tilfælde skal du for hver sådan klasse udføre disse trin én gang:
- Åbn Kør → Rediger konfiguration
- For værdien af VM-indstillinger skal du indtaste følgende:
--module-path ./lib/javafx-sdk-16/lib --add-modules=javafx.controls,javafx.fxml,javafx.base
OPMÆRKSOMHED:
I nyere versioner af IntelliJ IDEA er feltet "VM-indstillinger" ikke vist som standard. Tryk på ALT+V for at vise den
- Tryk på: Anvend → OK
- Kør spillet.