1. Munka a játéktér celláival

Nagyon jó, hogy sejtekre oszthatjuk a játékteret. De mit tehetünk magukkal a sejtekkel?

A játéktér minden cellájához beállíthatjuk:

  • cella színe (a cella háttérszíne);
  • szöveg (ez lehet szöveg vagy szám);
  • szöveg szín;
  • szöveg mérete a cella méretének százalékában.

Tekintsük a játékmező celláival való munkamódszereket:

void setCellColor(int x, int y, Color color)(x, y)a -val egyenlő koordinátákkal rendelkező cella színét állítja be color.

Példák:

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).

Példa:

Color myColor = getCellColor(2, 0);

void setCellValue(int x, int y, String value)hozzárendeli a szöveget String valuea koordinátákkal ellátott cellához (x, y).

Példák:

setCellValue(3, 3, "text");
setCellValue(0, 8, "W");
setCellValue(4, 1, "2222");
setCellValue(6, 6, "");

String getCellValue(int x, int y)visszaadja a koordinátákkal ellátott cellában található szöveget (x, y).

Példák:

String s = getCellValue(3, 3);
System.out.println(getCellValue(4, 1));

void setCellTextSize(int x, int y, int size)beállítja a cellában lévő szöveg méretét koordinátákkal (x, y), ahol sizea szöveg magassága a cella magasságának százalékában.

Példa:

setCellTextSize(2, 0, 70); // 70% of the cell height

int getCellTextSize(int x, int y)a cellában lévő tartalom méretét adja vissza koordinátákkal (x, y).

Példa:

int size = getCellTextSize(2 , 0);

void setCellNumber(int x, int y, int value)int valuea koordinátákkal rendelkező cellához rendeli a számot (x, y).

Példák:

setCellNumber(3, 3, 40);
setCellNumber(0, 8, -8);
setCellNumber(4, 1, 2222);
setCellNumber(6, 6, 0);

int getCellNumber(int x, int y)a koordinátákkal ellátott cellában található számot adja vissza (x, y). Ha a cella nem tartalmaz számot, akkor 0-t ad vissza.

Példák:

int i = getCellNumber(3, 3);
System.out.println(getCellNumber(4, 1));

void setCellTextColor(int x, int y, Color color)beállítja a koordinátákkal ellátott cella tartalmának (szövegének) színét (x, y).

Példák:

setCellTextColor(2, 1, Color.GREEN);
setCellTextColor(0, 1, Color.NONE);

Color getCellTextColor(int x, int y)a koordinátákkal ellátott cella tartalmának (szövegének) színét adja vissza (x, y).

Példa:

Color textColor = getCellTextColor(1, 3);

Az Ön kényelme érdekében számos módszer létezik setCellValueEx()különböző paraméterkészletekkel:

void setCellValueEx(int x, int y, Color cellColor, String value)beállítja a cella háttérszínét és szövegét a és a (x, y)koordinátákkal .cellColorvalue

Példa:

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, szövegét és szövegszínét a , , és a (x, y)koordinátákkal .cellColorvaluetextColor

Példa:

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, szövegét, szövegszínét és szövegméretét a , , , és a (x, y)koordinátákkal .cellColorvaluetextColortextSize

Példa:

setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN, 70);


2. Színekkel való munka

A CodeGym játékmotornak van egy speciális Colortípusa, amely 148 színhez tartalmaz egyedi értékeket. Különleges értéke is van NONE, amely a szín hiányát jelzi.

Példák a színekkel való munkára

Color myColor = Color.WHITE;  // The color white is assigned to the myColor variable.
Color redColor = Color.RED; // The color red is assigned to the redColor variable.
Color blueColor = Color.BLUE; // The color blue is assigned to the blueColor variable.

Egy cellát pirosra színezhet a következő paranccsal:

setCellColor(0, 2, Color.RED);

A következő paranccsal ellenőrizheti, hogy egy cella bizonyos színű-e:

if (getCellColor(0,2) == Color.GREEN)
{
}

Néha előfordulhat, hogy minden lehetséges színből be kell szereznie egy tömböt. Ehhez használja a values()módszert.

Példa:

// An array containing every available color is assigned to the colors variable.
Color[] colors = Color.values();

A színindex beszerzése a színpalettán nagyon egyszerű – csak használja a következő ordinal()módszert:

Color color = Color.RED;
int redIndex = color.ordinal(); // Index of the color red

int blueIndex = Color.BLUE.ordinal(); // Index of the color blue

Könnyen színt kaphat az indexe alapján is:

 // The color whose index is 10 in the Color enum is assigned to the color variable.
Color color = Color.values()[10];


3. Párbeszédpanelek

A játék végén tudatnunk kell a játékossal, hogy nyert-e vagy veszített. Erre és más alkalmakra a CodeGym játékmotor rendelkezik egy speciális void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)módszerrel, amely egy párbeszédpanelt jelenít meg az üzenettel message.
Ennek a módszernek a paraméterei a következők:

  • cellColora párbeszédpanel háttérszíne
  • messageaz üzenet szövege
  • textColoraz üzenet szövegének színe
  • textSizeaz üzenet szövegének mérete

A párbeszédpanel bezárul, ha a felhasználó lenyomja a szóköz billentyűt, vagy rákattint az egérrel.

Példa a metódus meghívására:

// Display a dialog box with a message
showMessageDialog(Color.BLACK, "EPIC FAIL", Color.RED, 80);


4. Hasznossági módszerek

Játékok írásakor gyakran használ véletlenszerű számokat. A véletlen számok megszerzésének megkönnyítése érdekében használhatja a játékmotor segédprogramjait:

int getRandomNumber(int max)egy véletlen számot ad vissza től 0-ig (max–1).

int getRandomNumber(int min, int max)egy véletlen számot ad vissza től min-ig (max–1).


5. JDK 11+

Amikor a programot az IntelliJ IDEA-ból futtatja, a Game osztályt öröklő osztály a következő hibát generálhatja:

Error: JavaFX runtime components are missing, and are required to run this application

Ebben az esetben minden ilyen osztálynál egyszer végre kell hajtania az alábbi lépéseket:
  1. Nyissa meg a FuttatásKonfiguráció szerkesztése menüpontot
  2. A virtuálisgép-beállítások értékéhez írja be a következőket:
    --module-path ./lib/javafx-sdk-16/lib --add-modules=javafx.controls,javafx.fxml,javafx.base

    FIGYELEM:

    Az IntelliJ IDEA legújabb verzióiban a „VM-beállítások” mező alapértelmezés szerint nem jelenik meg. Megjelenítéséhez nyomja meg az ALT+V billentyűkombinációt

  3. Nyomja meg: AlkalmazOK
  4. Futtassa a játékot.