1. Bemutatkozás
A fejlesztő számára a számítógépes játék megvalósításának három szakasza van:-
A játék inicializálása — Ez a szakasz előkészítő műveletekből áll: a játéktér méretének beállítása, a játéktér megrajzolása, játékobjektumok létrehozása és kezdeti helyzetükbe helyezése, valamint egyéb műveletek, amelyeket a játék elején végre kell hajtani.
-
A játék folyamata. Ez a szakasz magában foglalja a játéktárgyak mozgatását, a játékos akcióit, a pontszám megtartását és egyéb olyan műveleteket, amelyeket bizonyos gyakorisággal vagy gombnyomással kell végrehajtani.
-
A játék befejezése. Ez a szakasz magában foglalja az animáció leállítását, a győzelem vagy veszteség jelentését, és egyéb műveleteket, amelyeket a játék végén végre kell hajtani.
2. A játék inicializálása
A játék inicializálása mindössze két lépésből áll: 1. lépés: A játék fő osztályának létrehozása. Saját játék fejlesztéséhez a CodeGym játékmotor használatával létre kell hoznia egy osztályt, amely örökli azGame
osztályt (com.codegym.engine.cell.Game). Ez lehetővé teszi az osztályod számára, hogy meghívja a játékmotor metódusait, és lehetőséget ad a motornak a saját módszereinek meghívására. Például:
import com.codegym.engine.cell.Game;
public class MySuperGame extends Game {
...
}
2. lépés: Az inicializálási metódus() felülbírálása. A játék elindításához szükséges összes művelet ebben a metódusban fog megtörténni: a játéktér létrehozása, játékobjektumok létrehozása stb. Egyszerűen deklarálnia kell ezt a metódust abban az osztályban, amely örökli az osztályt Game
. Például:
import com.codegym.engine.cell.Game;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Here we perform all actions to initialize the game and its objects
}
}
A initialize()
módszer analóg a metódussal main()
: ez a kiindulópontja a játékhoz írt összes kódnak.
3. Játéktér kialakítása
A játéktér kialakítása is csak két lépésből áll. 1. lépés: Ossza fel a játékteret cellákra. A játékmotor a teljes játékteret cellákra osztja. A minimális méret 3x3; a maximum 100x100. A játék képernyőjének méretei állandóak. Különböző számú cellára osztható. Például, 7 cella széles és 9 cella magas: Vegye figyelembe, hogy a cellák számozása a bal felső sarokból kezdődik. A játéktér méretének beállításához használja avoid setScreenSize(int width, int height)
módszert. Beállítja a játéktér méretét. Paraméterei a cellák számát jelentik vízszintesen (szélesség) és függőlegesen (magasság). Általában egyszer hívják a játék indításakor. Például:
import com.codegym.engine.cell.Game;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Set the field size to 7 cells x 9 cells
setScreenSize(7, 9);
...
}
}
A játék írásakor előfordulhat, hogy meg kell találnia a játékmező aktuális szélességét és magasságát. Ehhez a int getScreenWidth()
és int getScreenHeight()
módszerek jól jönnek majd. 2. lépés: Kapcsolja be vagy ki a rácsot (opcionális). Ha nem tetszik a játéktér celláit elválasztó fekete rács, akkor kikapcsolhatja. A void showGrid(boolean isShow)
módszer be- és kikapcsolja a rácsot. Alapértelmezés szerint a rács jelenik meg. A kikapcsolásához hívja ezt a metódust false argumentumként:
showGrid(false);
Eredmény: A rács újbóli bekapcsolásához hívja:
showGrid(true);
4. Egy primitív program
Íme egy példa egy programra:
public class MySuperGame extends Game {
@Override
public void initialize() {
// Create a playing field that is 3 cells x 3 cells
setScreenSize(3, 3);
// Turn off the grid
showGrid(false);
// Change the background of the center cell to blue, and display an "X" in it.
setCellValueEx(1, 1, Color.BLUE, "X", Color.ORANGE, 50);
}
}
Ebben a példában a játékmező 3x3-ra van állítva, a rács ki van kapcsolva, és a cella méretének fele narancssárga "X" van beállítva kék háttérre a középső cellában. Ez lesz az első dolog, amit a játékos lát a játék kezdetekor.
5. Munka a játéktér celláival
Az, hogy a játékteret sejtekre oszthatjuk, nagyszerű, de mit tehetünk magukkal a sejtekkel? A következő tulajdonságokat állíthatja be a játékmező egyes celláihoz:- cella színe (cella háttérszíne);
- szöveg (szöveg vagy szám);
- szöveg szín;
- szöveg mérete a cella méretének százalékában.
-
void setCellColor(int x, int y, Color color)
— beállítja a cella színét koordinátákkal (x, y):setCellColor(0, 0, Color.RED); setCellColor(3, 6, Color.BLACK); setCellColor(6, 8, Color.NONE);
-
Color getCellColor(int x, int y)
— visszaadja a cella színét koordinátákkal (x, y):Color myColor = getCellColor(2, 0);
-
void setCellValue(int x, int y, String value)
— beállítja a cella szövegét, amelynek koordinátái (x, y) megegyeznek az értékparaméterben szereplő karakterlánccal:setCellValue(3, 3, "text"); setCellValue(0, 8, "W"); setCellValue(4, 1, "2222"); setCellValue(6, 6, "");
-
String getCellValue(int x, int y)
— visszaadja a cellában lévő szöveget koordinátákkal (x, y):String s = getCellValue(3, 3); System.out.println(getCellValue(4, 1));
-
void setCellTextSize(int x, int y, int size)
— beállítja a cella tartalmának méretét koordinátákkal (x, y). A méret paraméter a szöveg magassága a cella magasságának százalékában:setCellTextSize(2 , 0, 70); // 70% of the cell height
-
int getCellTextSize(int x, int y)
— visszaadja a cella tartalmának méretét koordinátákkal (x, y):int size = getCellTextSize(2 , 0);
-
void setCellNumber(int x, int y, int value)
— beállítja a cella szövegét, amelynek koordinátái (x, y) megegyeznek az értékparaméterben szereplő számmal:setCellNumber(3, 3, 40); setCellNumber(0, 8, -8); setCellNumber(4, 1, 2222); setCellNumber(6, 6, 0);
-
int getCellNumber(int x, int y)
— visszaadja a cellában lévő számot koordinátákkal (x, y). Ha a cella nem tartalmaz számot, 0-t ad vissza:int i = getCellNumber(3, 3); System.out.println(getCellNumber(4, 1));
-
void setCellTextColor(int x, int y, Color color)
— beállítja a cella tartalmának (szövegének) színét koordinátákkal (x, y):setCellTextColor(2, 1, Color.GREEN); setCellTextColor(0, 1, Color.NONE);
-
Color getCellTextColor(int x, int y)
— visszaadja a cella tartalmának (szövegének) színét koordinátákkal (x, y):Color textColor = getCellTextColor(1, 3);
setCellValueEx()
különböző paraméterkészletekkel:
-
void setCellValueEx(int x, int y, Color cellColor, String value)
— beállítja a háttérszínt (cellColor) és a cella tartalmát (értékét) koordinátákkal (x, y):setCellValueEx(0, 2, Color.BLUE, "56");
-
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor)
— beállítja a cella háttérszínét (cellColor), tartalmát (értékét) és szövegszínét (textColor) koordinátákkal (x, y):setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN);
-
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor, int textSize)
— beállítja a cella háttérszínét (cellColor), tartalmát (értékét), szövegszínét (textColor) és szövegméretét (textSize) koordinátákkal (x, y):setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN, 70);
6. Színekkel való munka
AColor enum
színekért felelős a játékmotorban. 148 szín egyedi értékeivel rendelkezik. Ezenkívül van egy speciális értéke (NONE), amely nem jelent színt. Íme egy példa a színekkel való munkára:
Color myColor = Color.WHITE; // The myColor variable is set to white.
Color redColor = Color.RED; // The redColor variable is set to red.
Color blueColor = Color.BLUE; // The blueColor variable is set to light blue.
Néha előfordulhat, hogy be kell szereznie az összes létező szín tömbjét. Ehhez használja a values()
módszert. Például:
Color[] colors = Color.values(); // The colors variable is assigned an array containing all available colors.
Nagyon egyszerű színindexet találni a palettán:
Color color = Color.RED;
int redIndex = color.ordinal(); // Index of red
int blueIndex = Color.BLUE.ordinal(); // Index of blue
Az index alapján is kaphat színt:
Color color = Color.values()[10]; // The color variable is assigned the color with index 10 in the Color enum.
7. Párbeszédpanelek
A játék végén jelentenie kell a játékosnak a győzelmet vagy a vereséget. Ehhez van egy speciális módszer, amely egy párbeszédpanelt jelenít meg a játék képernyőjén:
void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)
Itt:
cellColor
a párbeszédpanel háttérszíne;message
az üzenet szövege;textColor
az üzenet szövegének színe;textSize
az üzenet szövegének mérete.
8. Hasznossági módszerek
Játékok írásakor gyakran használnak véletlen számokat. A véletlen számok beszerzésének megkönnyítése érdekében a játékmotor által biztosított alábbi segédprogramokat használhatja:-
int getRandomNumber(int max)
— véletlenszerű egész számot ad vissza 0-tól (max-1)-ig. -
int getRandomNumber(int min, int max)
— egy véletlenszerű egész számot ad vissza mintől (max-1)-ig.
GO TO FULL VERSION