1. Praca z komórkami boiska
To wspaniale, że możemy podzielić boisko na komórki. Ale co możemy zrobić z samymi komórkami?
Dla każdej komórki pola gry możemy ustawić:
- kolor komórki (kolor tła komórki);
- tekst (może to być tekst lub liczba);
- kolor tekstu;
- rozmiar tekstu jako procent rozmiaru komórki.
Rozważmy metody pracy z komórkami pola gry:
void setCellColor(int x, int y, Color color)
ustawia kolor komórki o współrzędnych (x, y)
równych color
.
Przykłady:
setCellColor(0, 0, Color.RED);
setCellColor(3, 6, Color.BLACK);
setCellColor(6, 8, Color.NONE);
Color getCellColor(int x, int y)
zwraca kolor komórki ze współrzędnymi (x, y)
.
Przykład:
Color myColor = getCellColor(2, 0);
void setCellValue(int x, int y, String value)
przypisuje tekst String value
do komórki ze współrzędnymi (x, y)
.
Przykłady:
setCellValue(3, 3, "text");
setCellValue(0, 8, "W");
setCellValue(4, 1, "2222");
setCellValue(6, 6, "");
String getCellValue(int x, int y)
zwraca tekst zawarty w komórce ze współrzędnymi (x, y)
.
Przykłady:
String s = getCellValue(3, 3);
System.out.println(getCellValue(4, 1));
void setCellTextSize(int x, int y, int size)
ustawia rozmiar tekstu w komórce o współrzędnych (x, y)
, gdzie size
jest wysokością tekstu jako procentem wysokości komórki.
Przykład:
setCellTextSize(2, 0, 70); // 70% of the cell height
int getCellTextSize(int x, int y)
zwraca rozmiar zawartości komórki ze współrzędnymi (x, y)
.
Przykład:
int size = getCellTextSize(2 , 0);
void setCellNumber(int x, int y, int value)
przypisuje numer int value
do komórki ze współrzędnymi (x, y)
.
Przykłady:
setCellNumber(3, 3, 40);
setCellNumber(0, 8, -8);
setCellNumber(4, 1, 2222);
setCellNumber(6, 6, 0);
int getCellNumber(int x, int y)
zwraca liczbę zawartą w komórce ze współrzędnymi (x, y)
. Jeśli komórka nie zawiera liczby, zwraca 0.
Przykłady:
int i = getCellNumber(3, 3);
System.out.println(getCellNumber(4, 1));
void setCellTextColor(int x, int y, Color color)
ustawia kolor zawartości (tekstu) komórki ze współrzędnymi (x, y)
.
Przykłady:
setCellTextColor(2, 1, Color.GREEN);
setCellTextColor(0, 1, Color.NONE);
Color getCellTextColor(int x, int y)
zwraca kolor zawartości (tekstu) komórki ze współrzędnymi (x, y)
.
Przykład:
Color textColor = getCellTextColor(1, 3);
Dla Twojej wygody istnieje wiele setCellValueEx()
metod z różnymi zestawami parametrów:
void setCellValueEx(int x, int y, Color cellColor, String value)
ustawia kolor tła i tekst komórki o współrzędnych (x, y)
odpowiednio cellColor
i value
.
Przykład:
setCellValueEx(0, 2, Color.BLUE, "56");
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor)
ustawia kolor tła, tekst i kolor tekstu komórki o współrzędnych równych (x, y)
odpowiednio cellColor
, value
, i textColor
.
Przykład:
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN);
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor, int textSize);
ustawia kolor tła, tekst, kolor tekstu i rozmiar tekstu komórki o współrzędnych równych (x, y)
odpowiednio cellColor
, value
, textColor
, i textSize
.
Przykład:
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN, 70);
2. Praca z kolorem
Silnik gry CodeGym ma specjalny Color
typ, który zawiera unikalne wartości dla 148 kolorów. Ma również specjalną NONE
wartość, która reprezentuje brak koloru.
Przykłady pracy z kolorem
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.
Możesz pokolorować komórkę na czerwono za pomocą polecenia:
setCellColor(0, 2, Color.RED);
Możesz sprawdzić, czy komórka ma określony kolor za pomocą polecenia takiego jak:
if (getCellColor(0,2) == Color.GREEN)
{
}
Czasami może być konieczne uzyskanie tablicy wszystkich możliwych kolorów. Aby to zrobić, użyj values()
metody.
Przykład:
// An array containing every available color is assigned to the colors variable.
Color[] colors = Color.values();
Uzyskanie indeksu koloru w palecie kolorów jest bardzo łatwe — wystarczy użyć ordinal()
metody:
Color color = Color.RED;
int redIndex = color.ordinal(); // Index of the color red
int blueIndex = Color.BLUE.ordinal(); // Index of the color blue
Możesz także łatwo uzyskać kolor według jego indeksu:
// The color whose index is 10 in the Color enum is assigned to the color variable.
Color color = Color.values()[10];
3. Okna dialogowe
Na koniec gry musimy poinformować gracza, czy wygrał, czy przegrał. Na tę i inne okazje silnik gry CodeGym ma specjalną void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)
metodę, która wyświetla okno dialogowe z message
komunikatem.
Parametrami tej metody są:
cellColor
jest kolorem tła okna dialogowegomessage
jest treść wiadomościtextColor
to kolor tekstu wiadomościtextSize
to rozmiar tekstu wiadomości
Okno dialogowe zamyka się samo, jeśli użytkownik naciśnie spację lub kliknie okno dialogowe myszą.
Przykład wywołania tej metody:
// Display a dialog box with a message
showMessageDialog(Color.BLACK, "EPIC FAIL", Color.RED, 80);
4. Metody użytkowe
Podczas pisania gier będziesz często używać liczb losowych. Aby ułatwić sobie zdobywanie liczb losowych, możesz skorzystać z narzędzi narzędziowych silnika gry:
int getRandomNumber(int max)
zwraca losową liczbę od 0
do (max–1)
włącznie.
int getRandomNumber(int min, int max)
zwraca losową liczbę od min
do (max–1)
włącznie.
5. JDK 11+
Podczas uruchamiania programu z IntelliJ IDEA klasa, która dziedziczy klasę Game, może wygenerować następujący błąd:
Error: JavaFX runtime components are missing, and are required to run this application
W takim przypadku dla każdej takiej klasy musisz wykonać te czynności jeden raz:
- Otwórz Uruchom → Edytuj konfigurację
- Jako wartość opcji maszyny wirtualnej wpisz:
--module-path ./lib/javafx-sdk-16/lib --add-modules=javafx.controls,javafx.fxml,javafx.base
UWAGA:
W ostatnich wersjach IntelliJ IDEA pole „Opcje maszyny wirtualnej” nie jest domyślnie wyświetlane. Aby go wyświetlić, naciśnij klawisze ALT+V
- Naciśnij: Zastosuj → OK
- Uruchom grę.