
1. Arbeide med musen
Spillmotoren har to metoder for å jobbe med musen:-
void onMouseLeftClick(int x, int y);
-
void onMouseRightClick(int x, int y);
Game
, og legger til hvilken som helst kode du vil ha til dem. Spillmotoren vil kalle dem når brukeren klikker på museknappene.
-
onMouseLeftClick(int x, int y)
— kalles opp av motoren når venstre museknapp klikkes. Parametrene er koordinatene til cellen på spillefeltet der klikket skjedde. Den øverste venstre cellen har koordinater (0, 0). Du må overstyre denne metoden for å bruke den. -
onMouseRightClick(int x, int y)
— kalles når høyre museknapp klikkes. Denne metoden fungerer somonMouseLeftClick(int x, int y)
metoden.
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. Arbeide med tastaturet
Spillmotoren har to metoder for å jobbe med tastaturet:-
void onKeyPress(Key key);
-
void onKeyReleased(Key key);
-
onKeyPress(Key key)
— ringes opp når en tast trykkes. Nøkkelparameteren er den trykket tasten (eller Key.UNKNOWN). -
onKeyReleased(Key key)
— ringes opp når en tast slippes. Nøkkelparameteren er den tilsvarende nøkkelen (eller 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);
}
}
}
Viktig! I den gjeldende versjonen av spillmotoren har nøkkeltypen et begrenset sett med ni verdier:Verdi | Tast trykket av brukeren |
---|---|
Tast.ENTER | Brukeren trykket på Enter |
Key.ESCAPE | Brukeren trykket Esc |
Tast.PAUSE | Brukeren trykket Pause |
Key.SPACE | Brukeren trykket mellomrom |
Tast.VENSTRE | Brukeren trykket på venstre piltast |
Nøkkel.HØYRE | Brukeren trykket på høyre piltast |
Tast.OPP | Brukeren trykket på pil opp-tasten |
Tast.NED | Brukeren trykket på ned-tasten |
Nøkkel.UKJENT | Brukeren trykket på en annen tast enn de ovenfor |
3. Arbeide med timeren
Mange spill skjer i sanntid, det vil si at selv om brukeren ikke gjør noe, skjer det fortsatt hendelser i spillet. For å gjøre det mulig for deg å implementere slike spill, la vi til en tidtaker til spillmotoren. Det fungerer omtrent slik: du slår på timeren og stiller inn timerintervallet. For eksempel 500 millisekunder. Deretter kaller spillmotoren metoden hvert halve sekundonTurnTimer()
. Igjen og igjen for alltid - helt til timeren er slått av. Så hvordan bruker du timeren?
-
Slå på timeren.
For å gjøre dette er det en spesiell
void setTurnTimer(int timeMs)
metode. Metoden tar som argument intervallet mellom anrop i millisekunder (1 millisekund = 1/1000 sekund). Du trenger bare å ringe den én gang, og spillmotoren vil begynne å kalleonTurn()
metoden hver gang Ms millisekunder. -
Overstyr onTurn(int)-metoden.
For å gjøre dette må du deklarere en
void onTurn(int step)
metode i klassen som arverGame
. Denne metoden vil bli kalt av spillmotoren. Dessuten vil spillmotoren med hvert kall sende en sekvensiell identifikator for samtalen til metoden (1, 2, 3, …). -
Slå av timeren.
Hvis timeren ikke lenger er nødvendig, for eksempel når brukeren fullfører spillet, kan du slå den av. For å gjøre dette, trenger du bare å ringe
stopTurnTimer()
metoden. -
Akselerer eller endre tidtakeren.
I noen spill akselererer hendelsene konstant, så det ville være praktisk å øke hastigheten på tidtakeren vår (redusere tiden mellom samtaler). Ingenting kan være enklere: Ring
setTurnTimer(int timeMs)
igjen med en ny verdi, og tiden mellomonTurn()
samtalene endres.
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);
}
}
…
}
I dette enkle eksemplet laget vi et felt som er 3 celler x 3 celler. Deretter startet vi en timer som vil kalle opp onTurn()
metoden hvert halve sekund. Hvert halve sekund vil cellefargen endres, men innholdet endres ikke. Etter 50 sekunder vil fargen ikke lenger endres. Det er alt for nå! Hvis du vil lære mer om "Spill"-delen, er her litt nyttig dokumentasjon som kan hjelpe:
GO TO FULL VERSION