
1. Wstęp
Dla dewelopera realizacja gry komputerowej składa się z trzech etapów:-
Inicjalizacja gry — Na ten etap składają się czynności przygotowawcze: ustawienie rozmiaru pola gry, narysowanie pola gry, stworzenie obiektów gry i ustawienie ich w początkowych pozycjach oraz inne czynności, które należy wykonać na początku gry.
-
Proces gry. Ten etap obejmuje przesuwanie obiektów w grze, działania graczy, zapisywanie wyników i inne czynności, które muszą być wykonywane z określoną częstotliwością lub po naciśnięciu przycisków.
-
Ukończenie gry. Ten etap obejmuje zatrzymanie animacji, zgłoszenie wygranej lub przegranej oraz inne czynności, które należy wykonać na koniec gry.
2. Inicjalizacja gry
Inicjalizacja gry składa się tylko z dwóch kroków: Krok 1: Utwórz główną klasę gry. Aby opracować własną grę przy użyciu silnika gry CodeGym, musisz utworzyć klasę, która dziedziczy klasęGame
(com.codegym.engine.cell.Game). Daje to twojej klasie możliwość wywoływania metod silnika gry i daje silnikowi możliwość wywoływania twoich metod. Na przykład:
import com.codegym.engine.cell.Game;
public class MySuperGame extends Game {
...
}
Krok 2: Zastąp metodę inicjalizacji (). W tej metodzie będą wykonywane wszystkie czynności wymagane do uruchomienia gry: tworzenie pola gry, tworzenie obiektów gry itp. Wystarczy zadeklarować tę metodę w klasie, która dziedziczy klasę Game
. Na przykład:
import com.codegym.engine.cell.Game;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Here we perform all actions to initialize the game and its objects
}
}
Metoda initialize()
jest analogiczna do main()
metody: jest punktem wyjścia dla całego kodu napisanego dla gry.
3. Tworzenie pola gry
Tworzenie pola gry również składa się tylko z dwóch kroków. Krok 1: Podziel pole gry na komórki. Całe pole gry jest podzielone na komórki przez silnik gry. Minimalny rozmiar to 3x3; maksymalny to 100x100. Wymiary ekranu gry są stałe. Można go podzielić na różne liczby komórek. Na przykład 7 komórek szerokości i 9 komórek wysokości:
void setScreenSize(int width, int height)
metody. Określa rozmiar pola gry. Jego parametry reprezentują liczbę komórek w poziomie (szerokość) iw pionie (wysokość). Zwykle jest wywoływany raz, gdy gra jest uruchamiana. Na przykład:
import com.codegym.engine.cell.Game;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Set the field size to 7 cells x 9 cells
setScreenSize(7, 9);
...
}
}
Podczas pisania gry może być konieczne uzyskanie aktualnej szerokości i wysokości pola gry. Aby to zrobić, przydadzą się metody int getScreenWidth()
i . Krok 2: Włącz lub wyłącz siatkę (opcjonalnie). Jeśli nie podoba Ci się czarna siatka oddzielająca komórki na boisku, możesz ją wyłączyć. Metoda włącza i wyłącza siatkę. Domyślnie wyświetlana jest siatka. Aby to wyłączyć, wywołaj tę metodę z false jako argumentem: int getScreenHeight()
void showGrid(boolean isShow)
showGrid(false);
Wynik: 
showGrid(true);
4. Prymitywny program
Oto przykład programu:
public class MySuperGame extends Game {
@Override
public void initialize() {
// Create a playing field that is 3 cells x 3 cells
setScreenSize(3, 3);
// Turn off the grid
showGrid(false);
// Change the background of the center cell to blue, and display an "X" in it.
setCellValueEx(1, 1, Color.BLUE, "X", Color.ORANGE, 50);
}
}
W tym przykładzie pole gry jest ustawione na 3x3, siatka jest wyłączona, a pomarańczowy „X” o połowie rozmiaru komórki jest ustawiony na niebieskim tle w środkowej komórce. Będzie to pierwsza rzecz, którą zobaczy gracz po rozpoczęciu gry.
5. Praca z komórkami boiska
Fakt, że możemy podzielić pole gry na komórki jest świetny, ale co możemy zrobić z samymi komórkami? Możesz ustawić następujące właściwości dla każdej komórki pola gry:- kolor komórki (kolor tła komórki);
- tekst (tekst lub liczba);
- kolor tekstu;
- rozmiar tekstu jako procent rozmiaru komórki.
-
void setCellColor(int x, int y, Color color)
— ustawia kolor komórki o współrzędnych (x, y):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 o współrzędnych (x, y):Color myColor = getCellColor(2, 0);
-
void setCellValue(int x, int y, String value)
— ustawia tekst komórki o współrzędnych (x, y) równych ciągowi w parametrze value: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 o współrzędnych (x, y):String s = getCellValue(3, 3); System.out.println(getCellValue(4, 1));
-
void setCellTextSize(int x, int y, int size)
— ustawia rozmiar zawartości komórki o współrzędnych (x, y). Parametr rozmiaru to wysokość tekstu jako procent wysokości komórki:setCellTextSize(2 , 0, 70); // 70% of the cell height
-
int getCellTextSize(int x, int y)
— zwraca rozmiar zawartości komórki o współrzędnych (x, y):int size = getCellTextSize(2 , 0);
-
void setCellNumber(int x, int y, int value)
— ustawia tekst komórki o współrzędnych (x, y) równych liczbie w parametrze value: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 o współrzędnych (x, y). Jeśli komórka nie zawiera liczby, zwraca 0: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 o współrzędnych (x, y):setCellTextColor(2, 1, Color.GREEN); setCellTextColor(0, 1, Color.NONE);
-
Color getCellTextColor(int x, int y)
— zwraca kolor zawartości (tekstu) komórki o współrzędnych (x, y):Color textColor = getCellTextColor(1, 3);
setCellValueEx()
metod z różnymi zestawami parametrów:
-
void setCellValueEx(int x, int y, Color cellColor, String value)
— ustawia kolor tła (cellColor) i zawartość (wartość) komórki o współrzędnych (x, y):setCellValueEx(0, 2, Color.BLUE, "56");
-
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor)
— ustawia kolor tła (cellColor), zawartość (wartość) i kolor tekstu (textColor) komórki o współrzędnych (x, y):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 (cellColor), zawartość (wartość), kolor tekstu (textColor) i rozmiar tekstu (textSize) komórki o współrzędnych (x, y):setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN, 70);
6. Praca z kolorem
OdpowiadaColor enum
za kolory w silniku gry. Posiada unikalne wartości dla 148 kolorów. Ma również specjalną wartość (BRAK), która nie reprezentuje żadnego koloru. Oto przykład pracy z kolorem:
Color myColor = Color.WHITE; // The myColor variable is set to white.
Color redColor = Color.RED; // The redColor variable is set to red.
Color blueColor = Color.BLUE; // The blueColor variable is set to light blue.
Czasami może być konieczne uzyskanie tablicy wszystkich istniejących kolorów. Aby to zrobić, użyj values()
metody. Na przykład:
Color[] colors = Color.values(); // The colors variable is assigned an array containing all available colors.
Bardzo łatwo jest uzyskać indeks koloru w palecie:
Color color = Color.RED;
int redIndex = color.ordinal(); // Index of red
int blueIndex = Color.BLUE.ordinal(); // Index of blue
Możesz także uzyskać kolor według jego indeksu:
Color color = Color.values()[10]; // The color variable is assigned the color with index 10 in the Color enum.
7. Okna dialogowe
Na koniec gry musisz zgłosić wygraną lub przegraną graczowi. Aby to zrobić, istnieje specjalna metoda, która wyświetla okno dialogowe na ekranie gry:
void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)
Tutaj:
cellColor
jest kolorem tła okna dialogowego;message
to treść wiadomości;textColor
to kolor tekstu wiadomości;textSize
to rozmiar tekstu wiadomości.
8. Metody użytkowe
Podczas pisania gier często używa się liczb losowych. Aby ułatwić sobie zdobywanie liczb losowych, możesz skorzystać z następujących metod użytkowych udostępnianych przez silnik gry:-
int getRandomNumber(int max)
— zwraca losową liczbę całkowitą od 0 do (max-1) włącznie. -
int getRandomNumber(int min, int max)
— zwraca losową liczbę całkowitą od min do (max-1) włącznie.
GO TO FULL VERSION