1. Lavorare con il mouse
Il motore di gioco dispone di due metodi per lavorare con il mouse:void onMouseLeftClick(int x, int y);
void onMouseRightClick(int x, int y);
Game
e scrivete l'eventuale codice al loro interno. E il motore di gioco stesso li chiamerà quando l'utente preme i pulsanti del mouse.
onMouseLeftClick(int x, int y)
- chiamato dal motore quando si fa clic con il pulsante sinistro del mouse. Come argomenti riceve le coordinate della cella del campo di gioco in cui è avvenuto il clic. La cella in alto a sinistra ha le coordinate (0,0). Per utilizzare questo metodo, è necessario sovrascriverlo.onMouseRightClick(int x, int y)
- chiamato quando si fa clic con il pulsante destro del mouse. Funziona in modo simile al metodoonMouseLeftClick(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. Lavorare con la tastiera
Il motore di gioco dispone di due metodi per lavorare con la tastiera:void onKeyPress(Key key);
void onKeyReleased(Key key);
onKeyPress (Key key)
— chiamato quando viene premuto un tasto qualsiasi della tastiera. Il valore del tasto premuto (o Key.UNKNOWN) viene passato al metodo come argomento chiave.onKeyReleased (Key key)
— chiamato quando viene rilasciato un tasto della tastiera. L'argomento chiave assume il valore della chiave corrispondente (o Key.UNKNOWN).
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);
}
}
}
Importante! Nella versione attuale del motore, il tipo Chiave può accettare solo un insieme limitato di valori (9 pezzi):
Senso | Ciò su cui l'utente ha fatto clic |
---|---|
Tasto.ENTER | L'utente ha premuto il pulsante Invio |
Tasto.ESCAPE | L'utente ha premuto il pulsante Esc |
Tasto.PAUSA | L'utente ha fatto clic sul pulsante Pausa |
Tasto.SPAZIO | L'utente ha premuto Spazio |
Tasto.SINISTRA | L'utente ha premuto la freccia sinistra |
Tasto.DESTRA | L'utente ha premuto la freccia destra |
Tasto.SU | L'utente ha premuto la freccia su |
Tasto.GIÙ | L'utente ha premuto la freccia giù |
Chiave.SCONOSCIUTO | Qualsiasi chiave tranne quelle elencate sopra |
3. Lavorare con il timer
Molti giochi si svolgono in tempo reale, il che significa che anche se l'utente non fa nulla, gli eventi del gioco vengono comunque eseguiti. Per consentirti di implementare tali giochi, abbiamo aggiunto la funzionalità timer al motore di gioco. Funziona più o meno così: accendi il timer e imposti il periodo di tempo dopo il quale dovrebbe spegnersi. Ad esempio, 500 millisecondi. Successivamente, ogni mezzo secondo il motore di gioco chiama il fileonTurnTimer()
. Un numero infinito di volte fino allo spegnimento del timer. Come utilizzare il timer?
-
Accendi il timer.
Esiste un metodo speciale per questo
void setTurnTimer(int timeMs)
. Come argomento, il metodo prende la durata dell'intervallo tra le chiamate in millisecondi (1/1000 di secondo). È sufficiente chiamarlo una volta e il motore di gioco inizierà a chiamare il metodoonTurn()
ogni voltaMs millisecondi. -
Sovrascriviamo il metodo onTurn(int).
Per fare ciò, è necessario dichiarare un metodo
void onTurn(int step)
in una classe ereditata dalla classeGame
. Questo metodo verrà chiamato dal motore di gioco. In questo caso, il motore trasferirà ogni volta il numero di serie di tale chiamata (1,2,3, ...) al metodo. -
Spegni il timer.
Se il timer non è più necessario, quando, ad esempio, l'utente ha completato il gioco, è possibile disattivarlo. Per fare questo basta chiamare il
stopTurnTimer()
. -
Accelera o cambia il timer.
In alcuni giochi gli eventi vengono costantemente accelerati, quindi sarebbe conveniente velocizzare il nostro timer (ridurre il tempo tra una chiamata e l'altra). Non c'è niente di più semplice: chiama
setTurnTimer(int timeMs)
di nuovo, con un nuovo valore, e l'intervallo tra le chiamateonTurn()
cambierà.
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 questo semplice esempio abbiamo creato un campo di 3x3 celle. Quindi abbiamo attivato un timer che chiamerà il metodo ogni mezzo secondo onTurn()
. Ogni mezzo secondo il colore della cella cambierà, ma il suo contenuto non cambierà. Dopo 50 secondi il colore smetterà di cambiare. È tutto! Se vuoi saperne di più sulla sezione Giochi, ecco qualche documentazione utile che può aiutarti:
GO TO FULL VERSION