1. Arbeiten mit der Maus
Die Spiel-Engine verfügt über zwei Methoden zum Arbeiten mit der Maus:-
void onMouseLeftClick(int x, int y);
-
void onMouseRightClick(int x, int y);
Game
, und fügen ihnen den gewünschten Code hinzu. Die Spiel-Engine ruft sie auf, wenn der Benutzer mit den Maustasten klickt.
-
onMouseLeftClick(int x, int y)
– Wird von der Engine aufgerufen, wenn mit der linken Maustaste geklickt wird. Seine Parameter sind die Koordinaten der Zelle des Spielfelds, in der der Klick erfolgt ist. Die Zelle oben links hat die Koordinaten (0, 0). Sie müssen diese Methode überschreiben, um sie verwenden zu können. -
onMouseRightClick(int x, int y)
— wird aufgerufen, wenn mit der rechten Maustaste geklickt wird. Diese Methode funktioniert wie dieonMouseLeftClick(int x, int y)
Methode.
import com.codegym.engine.cell.Color;
import com.codegym.engine.cell.Game;
import com.codegym.engine.cell.Key;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Set the size of the playing field to 3x3
setScreenSize(3, 3);
// Paint the playing field white
for (int x = 0; x < 3; x++) {
for (int y = 0; y < 3; y++) {
setCellColor(x, y, Color.WHITE);
}
}
}
@Override
public void onMouseLeftClick(int x, int y) {
// Set "X" in the cell where the left mouse click occurred
setCellValue(x, y, "X");
}
@Override
public void onMouseRightClick(int x, int y) {
// Clear the cell where the right mouse click occurred
setCellValue(x, y, "");
}
}
2. Arbeiten mit der Tastatur
Die Spiel-Engine verfügt über zwei Methoden zum Arbeiten mit der Tastatur:-
void onKeyPress(Key key);
-
void onKeyReleased(Key key);
-
onKeyPress(Key key)
— wird aufgerufen, wenn eine beliebige Taste gedrückt wird. Der Schlüsselparameter ist die gedrückte Taste (oder Key.UNKNOWN). -
onKeyReleased(Key key)
– wird aufgerufen, wenn eine beliebige Taste losgelassen wird. Der Schlüsselparameter ist der entsprechende Schlüssel (oder Key.UNKNOWN).
import com.codegym.engine.cell.Color;
import com.codegym.engine.cell.Game;
import com.codegym.engine.cell.Key;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Set the size of the playing field to 3x3
setScreenSize(3, 3);
// Paint the playing field white
for (int x = 0; x < 3; x++) {
for (int y = 0; y < 3; y++) {
setCellColor(x, y, Color.WHITE);
}
}
}
@Override
public void onKeyPress(Key key) {
// When the space bar is pressed, the center cell turns yellow
if (key == Key.SPACE) {
setCellColor(1, 1, Color.YELLOW);
}
}
@Override
public void onKeyReleased(Key key) {
// When the space bar is released, the center cell changes back to white
if (key == Key.SPACE) {
setCellColor(1, 1, Color.WHITE);
}
}
}
Wichtig! In der aktuellen Version der Spiel-Engine verfügt der Schlüsseltyp über einen begrenzten Satz von neun Werten:Wert | Vom Benutzer gedrückte Taste |
---|---|
Taste.ENTER | Der Benutzer drückte die Eingabetaste |
Schlüssel.ESCAPE | Der Benutzer hat Esc gedrückt |
Taste.PAUSE | Der Benutzer hat Pause gedrückt |
Schlüssel.SPACE | Der Benutzer drückte die Leertaste |
Taste.LINKS | Der Benutzer hat die linke Pfeiltaste gedrückt |
Taste.RECHTS | Der Benutzer hat die rechte Pfeiltaste gedrückt |
Taste.UP | Der Benutzer hat die Aufwärtspfeiltaste gedrückt |
Taste nach unten | Der Benutzer hat die Abwärtstaste gedrückt |
Schlüssel. UNBEKANNT | Der Benutzer hat eine andere als die oben genannten Tasten gedrückt |
3. Arbeiten mit dem Timer
Viele Spiele finden in Echtzeit statt, d. h. auch wenn der Benutzer nichts tut, passieren dennoch Ereignisse im Spiel. Um Ihnen die Umsetzung solcher Spiele zu ermöglichen, haben wir der Spiel-Engine einen Timer hinzugefügt. Das funktioniert ungefähr so: Sie schalten den Timer ein und stellen das Timer-Intervall ein. Beispiel: 500 Millisekunden. Dann ruft die Spiel-Engine jede halbe Sekunde dieonTurnTimer()
Methode auf. Immer und immer wieder – bis der Timer ausgeschaltet wird. Wie nutzt man den Timer?
-
Schalten Sie den Timer ein.
Dafür gibt es eine spezielle Methode. Als Argument verwendet die Methode das Intervall zwischen Aufrufen in Millisekunden (1 Millisekunde = 1/1000 Sekunde). Sie müssen es nur einmal aufrufen, und die Spiel-Engine ruft die Methode alle Millisekunden auf.
void setTurnTimer(int timeMs)
onTurn()
-
Überschreiben Sie die Methode onTurn(int).
Dazu müssen Sie in der erbenden Klasse eine Methode deklarieren . Diese Methode wird von der Spiel-Engine aufgerufen. Darüber hinaus übergibt die Spiel-Engine bei jedem Aufruf eine sequentielle Kennung für den Aufruf an die Methode (1, 2, 3, …).
void onTurn(int step)
Game
-
Schalten Sie den Timer aus.
Wenn der Timer nicht mehr benötigt wird, beispielsweise wenn der Benutzer das Spiel beendet, können Sie ihn deaktivieren. Dazu müssen Sie lediglich die Methode aufrufen.
stopTurnTimer()
-
Beschleunigen oder ändern Sie den Timer.
In einigen Spielen beschleunigt sich die Geschwindigkeit, mit der Ereignisse auftreten, ständig, daher wäre es praktisch, unseren Timer zu beschleunigen (die Zeit zwischen Aufrufen zu reduzieren). Nichts einfacher als das: Rufen Sie
setTurnTimer(int timeMs)
noch einmal mit einem neuen Wert auf, und die Zeit zwischenonTurn()
den Aufrufen ändert sich.
import com.codegym.engine.cell.Color;
import com.codegym.engine.cell.Game;
public class MySuperGame extends Game {
…
@Override
public void initialize() {
// Create a playing field that is 3 cells x 3 cells
setScreenSize(3, 3);
showGrid(false);
setCellValueEx(1, 1, Color.BLUE, "X", Color.ORANGE, 50);
setTurnTimer(500); // Turn on the timer, the interval between calls is 500ms.
}
@Override
public void onTurn(int step) {
if(step == 100) {
stopTurnTimer(); // If 100 calls have been made, turn off the timer
}
if (step % 2 == 1) {
// If this call is odd, set the cell background to red
setCellColor(1, 1, Color.RED);
}
else {
// If this call is even, set the cell background to blue
setCellColor(1, 1, Color.BLUE);
}
}
…
}
In diesem einfachen Beispiel haben wir ein Feld erstellt, das 3 Zellen x 3 Zellen groß ist. Dann haben wir einen Timer gestartet, der die Methode jede halbe Sekunde aufruft onTurn()
. Jede halbe Sekunde ändert sich die Farbe der Zelle, der Inhalt ändert sich jedoch nicht. Nach 50 Sekunden ändert sich die Farbe nicht mehr. Das ist alles für jetzt! Wenn Sie mehr über den Abschnitt „Spiele“ erfahren möchten, finden Sie hier einige nützliche Dokumentationen, die Ihnen helfen können:
GO TO FULL VERSION