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 schreiben beliebigen Code darin. Und die Spiel-Engine selbst ruft sie auf, wenn der Benutzer die Maustasten drückt.
onMouseLeftClick(int x, int y)
– Wird von der Engine aufgerufen, wenn Sie mit der linken Maustaste klicken. Als Argumente erhält es die Koordinaten der Zelle des Spielfeldes, in der der Klick erfolgt ist. Die Zelle oben links hat die Koordinaten (0,0). Um diese Methode verwenden zu können, muss sie überschrieben werden.onMouseRightClick(int x, int y)
– wird aufgerufen, wenn Sie mit der rechten Maustaste klicken. Funktioniert ähnlich wie die MethodeonMouseLeftClick(int x, int y)
.
import com.javarush.engine.cell.Color;
import com.javarush.engine.cell.Game;
import com.javarush.engine.cell.Key;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Устанавливаем размер игрового поля 3x3
setScreenSize(3, 3);
// Закрашиваем игровое поле белым цветом
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) {
// Ставим символ "X" в клетку по которой кликнули левой кнопкой мыши
setCellValue(x, y, "X");
}
@Override
public void onMouseRightClick(int x, int y) {
// Очищаем клетку по которой кликнули правой кнопкой мыши
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 Tastaturtaste gedrückt wird. Der Wert der gedrückten Taste (oder Key.UNKNOWN) wird als Schlüsselargument an die Methode übergeben.onKeyReleased (Key key)
– wird aufgerufen, wenn eine beliebige Tastaturtaste losgelassen wird. Das Schlüsselargument nimmt den Wert des entsprechenden Schlüssels (oder Key.UNKNOWN) an.
import com.javarush.engine.cell.Color;
import com.javarush.engine.cell.Game;
import com.javarush.engine.cell.Key;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Устанавливаем размер игрового поля 3x3
setScreenSize(3, 3);
// Закрашиваем игровое поле белым цветом
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) {
// При нажатии пробела, центральная клетка становится желтой
if (key == Key.SPACE) {
setCellColor(1, 1, Color.YELLOW);
}
}
@Override
public void onKeyReleased(Key key) {
// При отпускании пробела, центральной клетке возвращается белый цвет
if (key == Key.SPACE) {
setCellColor(1, 1, Color.WHITE);
}
}
}
Wichtig! In der aktuellen Version der Engine kann der Schlüsseltyp nur einen begrenzten Wertesatz (9 Stück) akzeptieren:
Bedeutung | Was der Benutzer angeklickt hat |
---|---|
Taste.ENTER | Der Benutzer drückte die Eingabetaste |
Schlüssel.ESCAPE | Der Benutzer hat die Esc-Taste gedrückt |
Taste.PAUSE | Der Benutzer hat auf die Schaltfläche „Pause“ geklickt |
Schlüssel.SPACE | Der Benutzer drückte die Leertaste |
Taste.LINKS | Der Benutzer hat den Linkspfeil gedrückt |
Taste.RECHTS | Der Benutzer hat den Rechtspfeil gedrückt |
Taste.UP | Der Benutzer hat den Aufwärtspfeil gedrückt |
Taste nach unten | Der Benutzer hat den Abwärtspfeil gedrückt |
Schlüssel. UNBEKANNT | Jeder Schlüssel außer den oben aufgeführten |
3. Arbeiten mit dem Timer
Viele Spiele finden in Echtzeit statt, was bedeutet, dass die Ereignisse im Spiel auch dann ausgeführt werden, wenn der Benutzer nichts tut. Damit Sie solche Spiele umsetzen können, haben wir die Game-Engine um eine Timer-Funktionalität erweitert. Das funktioniert etwa so: Man schaltet den Timer ein und stellt die Zeitspanne ein, nach der er erlöschen soll. Beispiel: 500 Millisekunden. Danach ruft die Game Engine jede halbe Sekunde dieonTurnTimer()
. Unendlich oft, bis der Timer ausgeschaltet wird. Wie verwende ich den Timer?
-
Schalten Sie den Timer ein.
Hierfür gibt es eine spezielle Methode
void setTurnTimer(int timeMs)
. Als Argument nimmt die Methode die Dauer des Intervalls zwischen Aufrufen in Millisekunden (1/1000 Sekunde). Es reicht aus, es einmal aufzurufen, und die Spiel-Engine beginntonTurn()
alle Millisekunden, die Methode aufzurufen. -
Wir überschreiben die onTurn(int)-Methode.
Dazu müssen Sie eine
void onTurn(int step)
von der Klasse geerbte Methode in einer Klasse deklarierenGame
. Diese Methode wird von der Spiel-Engine aufgerufen. In diesem Fall übergibt die Engine jedes Mal die Seriennummer eines solchen Aufrufs (1,2,3, ...) an die Methode. -
Schalten Sie den Timer aus.
Wenn der Timer nicht mehr benötigt wird, beispielsweise wenn der Benutzer das Spiel beendet hat, kann er ausgeschaltet werden. Dazu müssen Sie lediglich die anrufen
stopTurnTimer()
. -
Beschleunigen oder ändern Sie den Timer.
In einigen Spielen beschleunigen sich die Ereignisse ständig, daher wäre es praktisch, unseren Timer zu beschleunigen (die Zeit zwischen den Aufrufen zu reduzieren). Es gibt nichts Einfacheres: Rufen Sie
setTurnTimer(int timeMs)
erneut mit einem neuen Wert auf, und die Zeit zwischen den AufrufenonTurn()
ändert sich.
import com.javarush.engine.cell.Color;
import com.javarush.engine.cell.Game;
public class MySuperGame extends Game {
…
@Override
public void initialize() {
// Создаем игровое поле 3x3 клетки
setScreenSize(3, 3);
showGrid(false);
setCellValueEx(1, 1, Color.BLUE, "X", Color.ORANGE, 50);
setTurnTimer(500); //Включаем таймер, интервал между вызовами – 500мс.
}
@Override
public void onTurn(int step) {
if(step == 100) {
stopTurnTimer(); // если прошло 100 тактов, выключаем таймер
}
if (step % 2 == 1) {
// Если данный такт нечётный, установить клетке красный фон
setCellColor(1, 1, Color.RED);
} else {
//если данный такт чётный, установить клетке синий фон
setCellColor(1, 1, Color.BLUE);
}
}
…
}
In diesem einfachen Beispiel haben wir ein Feld mit 3x3 Zellen erstellt. Dann haben wir einen Timer eingeschaltet, der die Methode jede halbe Sekunde aufruft onTurn()
. Jede halbe Sekunde ändert sich die Farbe der Zelle, ihr Inhalt ändert sich jedoch nicht. Nach 50 Sekunden hört die Farbänderung auf. Das ist alles! 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