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 value
sel 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 size
ketinggian 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 value
kepada 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 cellColor
dan 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 Color
jenis khas yang mengandungi nilai unik untuk 148 warna. Ia juga mempunyai nilai istimewa NONE
yang 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 message
mesej.
Parameter kaedah ini ialah:
cellColor
ialah warna latar belakang kotak dialogmessage
ialah teks mesejtextColor
ialah warna teks mesejtextSize
ialah 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 0
kepada (max–1)
inklusif.
int getRandomNumber(int min, int max)
mengembalikan nombor rawak dari min
kepada (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:
- Buka Run → EditConfiguration
- 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
- Tekan: Guna → OK
- Jalankan permainan.
GO TO FULL VERSION