- Einführung
- Spielinitialisierung
- Ein Spielfeld schaffen
- Primitives Programm
- Arbeiten mit den Zellen des Spielfeldes
- Arbeiten mit Farbe
- Dialogboxen
- Utility-Methoden
- Einschränkungen der Spiel-Engine
1. Einleitung
Bei der Umsetzung eines Computerspiels durch den Entwickler gibt es drei Phasen:- Bei der Initialisierung des Spiels handelt es sich um vorbereitende Aktionen: Festlegen der Größe und Zeichnung des Spielfelds, Erstellen und Installieren von Spielobjekten in der Ausgangsposition sowie andere Aktionen, die zu Beginn des Spiels ausgeführt werden müssen.
- Spielablauf. Dazu gehören die Bewegung von Spielobjekten, Spieleraktionen, die Abrechnung gesammelter Punkte sowie andere Aktionen, die in bestimmten Abständen oder durch Drücken von Tasten ausgeführt werden müssen.
- Das Spiel beenden. Dazu gehören das Stoppen von Animationen, das Melden von Sieg oder Niederlage und andere Aktionen, die am Ende des Spiels ausgeführt werden müssen.
2. Spielinitialisierung
Die Initialisierung des Spiels besteht aus nur zwei Schritten:Schritt 1: Erstellen Sie die Hauptspielklasse.
Um Ihr Spiel auf Basis der JavaRush-Spiel-Engine zu entwickeln, müssen Sie eine Klasse erstellen und diese von der Game- Klasse (com.javarush.engine.cell.Game) erben. Dadurch erhält Ihre Klasse die Möglichkeit, Methoden auf der Spiel-Engine aufzurufen, und die Engine kann Ihre Methoden aufrufen. Beispiel:import com.javarush.engine.cell.Game;
public class MySuperGame extends Game {
...
}
Schritt 2: Überschreiben Sie die Methode initialize().
Bei dieser Methode werden alle zum Starten des Spiels erforderlichen Aktionen ausgeführt: Erstellen des Spielfelds, Erstellen von Spielobjekten usw. Sie müssen diese Methode lediglich in einer Klasse deklarieren, die von der Game- Klasse erbt . Beispiel:import com.javarush.engine.cell.Game;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Тут выполняем все действия по инициализации игры и ее ein Objektов
}
}
Die initialize()- Methode ist ein Analogon der main()- Methode : Hier beginnt die Ausführung des gesamten für das Spiel geschriebenen Codes.
3. Ein Spielfeld schaffen
Auch das Anlegen eines Spielfeldes besteht aus nur zwei Schritten.Schritt 1: Teilen Sie das Spielfeld in Zellen auf.
Das gesamte Spielfeld wird von der Spiel-Engine in Zellen unterteilt. Die Mindestgröße beträgt 3x3, die Höchstgröße 100x100. Der Spielbildschirm hat eine konstante Größe. Es kann in unterschiedlich viele Zellen unterteilt werden. Zum Beispiel Breite 7 und Höhe 9:import com.javarush.engine.cell.Game;
public class MySuperGame extends Game {
@Override
public void initialize() {
// задали размер поля 7x9 клеток
setScreenSize(7, 9);
...
}
}
Wenn Sie ein Spiel schreiben, müssen Sie möglicherweise die aktuelle Breite und Höhe des Spielfelds ermitteln. Hierfür sind die Methoden int getScreenWidth() und int getScreenHeight() nützlich .
Schritt 2: Schalten Sie das Gitter ein oder aus (optional).
Wenn Ihnen das schwarze Gitter, das die Zellen auf dem Spielfeld trennt, nicht gefällt, können Sie es deaktivieren. Die Methode void showGrid(boolean isShow) schaltet das Gitter, das Zellen trennt, ein und aus. Standardmäßig wird das Raster angezeigt. Um es zu deaktivieren, rufen Sie diese Methode mit dem Parameter false auf:showGrid(false);
Ergebnis:
showGrid(true);
4. Primitives Programm
Beispielprogramm:public class MySuperGame extends Game {
@Override
public void initialize() {
// Создаем игровое поле 3x3 клетки
setScreenSize(3, 3);
// Выключаем отображение сетки
showGrid(false);
// Меняем фон центральной клетки на синий, и отображаем в ней “Х”
setCellValueEx(1, 1, Color.BLUE, "X", Color.ORANGE, 50);
}
}
In diesem Beispiel ist die Größe des Spielfelds auf 3x3 eingestellt, die Rasteranzeige ist ausgeschaltet und ein orangefarbenes, halbzellengroßes „X“-Symbol wird in der Mitte auf einem blauen Hintergrund platziert. Dies ist das Erste, was der Spieler sieht, wenn er das Spiel startet.
5. Arbeiten mit den Zellen des Spielfeldes
Die Tatsache, dass wir das Spielfeld in Zellen unterteilen können, ist großartig, aber was können wir mit den Zellen selbst machen? Jede Zelle des Spielfeldes kann eingestellt werden:- Zellenfarbe (Zellenhintergrundfarbe);
- Text (Text oder Zahl);
- Textfarbe;
- Textgröße als Prozentsatz relativ zur Zellengröße.
-
void setCellColor(int x, int y, Color color) – legt die Farbe der Zelle mit den Koordinaten (x, y) fest:
setCellColor(0, 0, Color.RED); setCellColor(3, 6, Color.BLACK); setCellColor(6, 8, Color.NONE);
-
Farbe getCellColor(int x, int y) – gibt die Farbe der Zelle mit den Koordinaten (x, y) zurück:
Color myColor = getCellColor(2, 0);
-
void setCellValue(int x, int y, String value) – platziert den Textwert in der Zelle mit den Koordinaten (x, y):
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 den Koordinaten (x, y) zurück:
String s = getCellValue(3, 3); System.out.println(getCellValue(4, 1));
-
void setCellTextSize(int x, int y, int size) – legt die Größe des Inhalts in der Zelle mit Koordinaten (x, y) fest. Größe – Texthöhe als Prozentsatz der Zellenhöhe:
setCellTextSize(2 , 0, 70); // 70% высоты клетки
-
int getCellTextSize(int x, int y) – gibt die Größe des Inhalts in der Zelle mit Koordinaten (x, y) zurück:
int size = getCellTextSize(2 , 0);
-
void setCellNumber(int x, int y, int value) – platziert den Zahlenwert in der Zelle mit den Koordinaten (x, y):
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 (x, y) zurück. Wenn die Zelle keine Zahl enthält, wird 0 zurückgegeben:
int i = getCellNumber(3, 3); System.out.println(getCellNumber(4, 1));
-
void setCellTextColor(int x, int y, Color color) – legt die Farbe des Inhalts (Text) in der Zelle mit den Koordinaten (x, y) fest:
setCellTextColor(2, 1, Color.GREEN); setCellTextColor(0, 1, Color.NONE);
-
Farbe getCellTextColor(int x, int y) – gibt die Farbe des Inhalts (Text) in einer Zelle mit Koordinaten (x, y) zurück:
Color textColor = getCellTextColor(1, 3);
-
void setCellValueEx(int x, int y, Color cellColor, String value) – legt die Zelle mit den Koordinaten (x, y), der Hintergrundfarbe cellColor und dem Inhaltswert fest:
setCellValueEx(0, 2, Color.BLUE, "56");
-
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor) – legt die Zelle mit den Koordinaten (x, y), der Hintergrundfarbe cellColor, dem Inhaltswert und der Inhaltsfarbe textColor fest:
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN);
-
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor, int textSize); – legt die Zelle mit den Koordinaten (x, y), der Hintergrundfarbe cellColor, dem Inhaltswert, der Inhaltsfarbe textColor und der Inhaltsgröße textSize fest:
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN, 70);
6. Mit Farbe arbeiten
Farben in der Spiel-Engine werden durch die Color-Enumeration gesteuert , die eindeutige Werte für 148 Farben enthält. Und auch der besondere Wert NONE – das Fehlen von Farbe. Beispiel für die Arbeit mit Farbe:Color myColor = Color.WHITE; // переменной myColor присваивается белый цвет.
Color redColor = Color.RED; // переменной redColor присваивается красный цвет.
Color blueColor = Color.BLUE; // переменной blueColor присваивается синий цвет.
Manchmal möchten Sie vielleicht ein Array aller vorhandenen Farben erhalten. Verwenden Sie dazu die Methode „values()“ . Zum Beispiel:
// переменной colors присваивается массив, содержащий все доступные цвета.
Color[] colors = Color.values();
Die Farbnummer in der Palette zu erhalten ist sehr einfach:
Color color = Color.RED;
int redIndex = color.ordinal(); // Номер красного цвета
int blueIndex = Color.BLUE.ordinal(); // Номер синего цвета
Sie können eine Farbe auch anhand ihrer Nummer ermitteln:
// переменной color присваивается цвет с индексом 10 из enum Color.
Color color = Color.values()[10];
7. Dialogfelder
Am Ende des Spiels muss der Spieler über Sieg oder Niederlage informiert werden. Hierfür gibt es eine spezielle Methode, die ein Dialogfeld auf dem Spielbildschirm anzeigt:void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)
Hier:
- cellColor — Hintergrundfarbe des Dialogfelds;
- Nachricht – Nachrichtentext;
- textColor — Textfarbe der Nachricht;
- textSize – Textgröße der Nachricht.
8. Utility-Methoden
Beim Schreiben von Spielen werden häufig Zufallszahlen verwendet. Um das Erhalten von Zufallszahlen zu erleichtern, können Sie Scrap-Engine-Methoden verwenden:- int getRandomNumber(int max) – gibt eine zufällige Ganzzahl von 0 bis einschließlich (max–1) zurück.
- int getRandomNumber(int min, int max) – gibt eine zufällige Ganzzahl von min bis einschließlich (max–1) zurück.
GO TO FULL VERSION