1. Munka az egérrel
A játékmotor két módszerrel dolgozik az egérrel:-
void onMouseLeftClick(int x, int y);
-
void onMouseRightClick(int x, int y);
Game
, és tetszőleges kódot ad hozzájuk. A játékmotor hívja őket, amikor a felhasználó rákattint az egérgombokra.
-
onMouseLeftClick(int x, int y)
— hívja a motor, amikor a bal egérgombbal kattintanak. Paraméterei annak a játékmezőnek a koordinátái, ahol a kattintás történt. A bal felső cella koordinátái (0, 0). A használatához felül kell írnia ezt a módszert. -
onMouseRightClick(int x, int y)
— hívja meg, ha a jobb egérgombbal kattint. Ez a módszer úgy működik, mint aonMouseLeftClick(int x, int y)
módszer.
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. A billentyűzet használata
A játékmotor két módszerrel dolgozik a billentyűzettel:-
void onKeyPress(Key key);
-
void onKeyReleased(Key key);
-
onKeyPress(Key key)
— bármelyik gomb megnyomásakor hívható. A kulcsparaméter a lenyomott gomb (vagy Key.UNKNOWN). -
onKeyReleased(Key key)
— hívják, ha bármelyik billentyűt elengedik. A kulcsparaméter a megfelelő kulcs (vagy 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);
}
}
}
Fontos! A játékmotor jelenlegi verziójában a kulcstípus kilenc értékből álló korlátozott készlettel rendelkezik:Érték | A felhasználó által megnyomott billentyű |
---|---|
Key.ENTER | A felhasználó megnyomta az Enter billentyűt |
Kulcs.MENEKÜLÉS | A felhasználó megnyomta az Esc billentyűt |
Key.PAUSE | A felhasználó megnyomta a Szünet gombot |
Key.Space | A felhasználó megnyomta a szóköz gombot |
Kulcs.BAL | A felhasználó megnyomta a bal nyílbillentyűt |
Kulcs.JOBBRA | A felhasználó megnyomta a jobbra mutató nyilat |
Kulcs.FEL | A felhasználó megnyomta a felfelé mutató nyilat |
Kulcs.LE | A felhasználó megnyomta a le gombot |
Kulcs.ISMERETLEN | A felhasználó a fentiektől eltérő gombot nyomott meg |
3. Munka az időzítővel
Sok játék valós időben történik, vagyis ha a felhasználó nem csinál semmit, akkor is előfordulnak események a játékban. Az ilyen játékok megvalósításához időzítőt adtunk a játékmotorhoz. Valahogy így működik: bekapcsolod az időzítőt és beállítod az időzítő intervallumát. Például 500 ezredmásodperc. Ezután a játékmotor fél másodpercenként meghívja aonTurnTimer()
metódust. Újra és újra örökre – amíg az időzítőt ki nem kapcsolják. Szóval hogyan kell használni az időzítőt?
-
Kapcsolja be az időzítőt.
Ehhez van egy speciális módszer. A metódus a hívások közötti intervallumot használja ezredmásodpercben (1 ezredmásodperc = 1/1000 másodperc). Csak egyszer kell meghívnia, és a játékmotor minden Ms ezredmásodpercben elkezdi hívni a metódust.
void setTurnTimer(int timeMs)
onTurn()
-
Az onTurn(int) metódus felülbírálása.
Ehhez deklarálnia kell egy metódust az osztályban, amely örökli a . Ezt a módszert a játékmotor hívja meg. Sőt, a játékmotor minden egyes hívással egy szekvenciális azonosítót ad a metódusnak a híváshoz (1, 2, 3, …).
void onTurn(int step)
Game
-
Kapcsolja ki az időzítőt.
Ha az időzítőre már nincs szükség, például amikor a felhasználó befejezi a játékot, akkor kikapcsolhatja. Ehhez egyszerűen meg kell hívnia a módszert.
stopTurnTimer()
-
Gyorsítsa fel vagy módosítsa az időzítőt.
Egyes játékokban az események bekövetkezésének üteme folyamatosan gyorsul, ezért célszerű lenne felgyorsítani az időzítőnket (csökkenteni a hívások közötti időt). Mi sem lehet egyszerűbb: hívjon
setTurnTimer(int timeMs)
újra egy új értékkel, ésonTurn()
megváltozik a hívások közötti idő.
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);
}
}
…
}
Ebben az egyszerű példában létrehoztunk egy mezőt, amely 3 cella x 3 cella. Ezután elindítottunk egy időzítőt, amely onTurn()
fél másodpercenként hívja meg a metódust. Fél másodpercenként változik a cella színe, de a tartalma nem. 50 másodperc elteltével a szín már nem változik. Ez minden most! Ha többet szeretne megtudni a "Játékok" részről, itt van néhány hasznos dokumentáció, amely segíthet:
GO TO FULL VERSION