CodeGym /Kursus Java /All lectures for MS purposes /Menyelam jauh ke dalam enjin permainan

Menyelam jauh ke dalam enjin permainan

All lectures for MS purposes
Tahap , pelajaran
Tersedia

1. Bekerja dengan sel-sel padang permainan

Seronoknya kita boleh membahagikan padang permainan kepada sel. Tetapi apa yang boleh kita lakukan dengan sel itu sendiri?

Untuk setiap sel padang permainan, kita boleh menetapkan:

  • warna sel (warna latar belakang sel);
  • teks (ini boleh menjadi teks atau nombor);
  • warna teks;
  • saiz teks sebagai peratusan saiz sel.

Mari kita pertimbangkan kaedah untuk bekerja dengan sel-sel padang permainan:

void setCellColor(int x, int y, Color color)menetapkan warna sel dengan koordinat (x, y)sama dengan color.

Contoh:

setCellColor(0, 0, Color.RED);
setCellColor(3, 6, Color.BLACK);
setCellColor(6, 8, Color.NONE);

Color getCellColor(int x, int y)mengembalikan warna sel dengan koordinat (x, y).

Contoh:

Color myColor = getCellColor(2, 0);

void setCellValue(int x, int y, String value)memperuntukkan teks ke dalam String valuesel dengan koordinat (x, y).

Contoh:

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

String getCellValue(int x, int y)mengembalikan teks yang terkandung dalam sel dengan koordinat (x, y).

Contoh:

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

void setCellTextSize(int x, int y, int size)menetapkan saiz teks dalam sel dengan koordinat (x, y), di manakah sizeketinggian teks sebagai peratusan ketinggian sel.

Contoh:

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

int getCellTextSize(int x, int y)mengembalikan saiz kandungan dalam sel dengan koordinat (x, y).

Contoh:

int size = getCellTextSize(2 , 0);

void setCellNumber(int x, int y, int value)memberikan nombor int valuekepada sel dengan koordinat (x, y).

Contoh:

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

int getCellNumber(int x, int y)mengembalikan nombor yang terkandung dalam sel dengan koordinat (x, y). Jika sel tidak mengandungi nombor, ia mengembalikan 0.

Contoh:

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

void setCellTextColor(int x, int y, Color color)menetapkan warna kandungan (teks) sel dengan koordinat (x, y).

Contoh:

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

Color getCellTextColor(int x, int y)mengembalikan warna kandungan (teks) sel dengan koordinat (x, y).

Contoh:

Color textColor = getCellTextColor(1, 3);

Untuk kemudahan anda, terdapat berbilang setCellValueEx()kaedah dengan set parameter yang berbeza:

void setCellValueEx(int x, int y, Color cellColor, String value)menetapkan warna latar belakang dan teks sel dengan koordinat (x, y)yang sama dengan cellColordan value, masing-masing.

Contoh:

setCellValueEx(0, 2, Color.BLUE, "56");

void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor)menetapkan warna latar belakang, teks dan warna teks sel dengan koordinat (x, y)yang sama dengan cellColor, value, dan textColor, masing-masing.

Contoh:

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

void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor, int textSize);menetapkan warna latar belakang, teks, warna teks dan saiz teks sel dengan koordinat (x, y)yang sama dengan cellColor, value, textColor, dan textSize, masing-masing.

Contoh:

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


2. Bekerja dengan warna

Enjin permainan CodeGym mempunyai Colorjenis khas yang mengandungi nilai unik untuk 148 warna. Ia juga mempunyai nilai istimewa NONEyang mewakili ketiadaan warna.

Contoh kerja dengan warna

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.

Anda boleh mewarnakan sel merah menggunakan arahan:

setCellColor(0, 2, Color.RED);

Anda boleh menyemak sama ada sel adalah warna tertentu dengan arahan seperti:

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

Kadangkala anda mungkin perlu mendapatkan susunan setiap warna yang mungkin. Untuk melakukan ini, gunakan values()kaedah.

Contoh:

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

Mendapatkan indeks warna dalam palet warna adalah sangat mudah dilakukan — hanya gunakan ordinal()kaedah:

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

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

Anda juga boleh mendapatkan warna dengan mudah dengan indeksnya:

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


3. Kotak dialog

Pada penghujung permainan, kita perlu memberitahu pemain sama ada dia menang atau kalah. Untuk ini dan acara lain, enjin permainan CodeGym mempunyai void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)kaedah khas, yang memaparkan kotak dialog dengan messagemesej.
Parameter kaedah ini ialah:

  • cellColorialah warna latar belakang kotak dialog
  • messageialah teks mesej
  • textColorialah warna teks mesej
  • textSizeialah saiz teks mesej

Kotak dialog menutup sendiri jika pengguna menekan bar ruang atau mengklik pada kotak dialog dengan tetikus.

Contoh memanggil kaedah ini:

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


4. Kaedah utiliti

Semasa menulis permainan, anda akan kerap menggunakan nombor rawak. Untuk memudahkan mendapatkan nombor rawak, anda boleh menggunakan kaedah utiliti enjin permainan:

int getRandomNumber(int max)mengembalikan nombor rawak dari 0kepada (max–1)inklusif.

int getRandomNumber(int min, int max)mengembalikan nombor rawak dari minkepada (max–1)inklusif.


5. JDK 11+

Apabila menjalankan program anda daripada IntelliJ IDEA, kelas yang mewarisi kelas Permainan mungkin menjana ralat berikut:

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

Dalam kes ini, untuk setiap kelas tersebut, anda perlu melakukan langkah ini sekali:
  1. Buka RunEditConfiguration
  2. Untuk nilai pilihan VM , masukkan yang berikut:
    --module-path ./lib/javafx-sdk-16/lib --add-modules=javafx.controls,javafx.fxml,javafx.base

    PERHATIAN:

    Dalam versi terkini IntelliJ IDEA, medan "pilihan VM" tidak ditunjukkan secara lalai. Untuk memaparkannya, tekan ALT+V

  3. Tekan: GunaOK
  4. Jalankan permainan.
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION