1. Pengenalan
Bagi pembangun, terdapat tiga peringkat untuk pelaksanaan permainan komputer:-
Permulaan permainan — Peringkat ini terdiri daripada tindakan persediaan: menetapkan saiz padang permainan, melukis padang permainan, mencipta objek permainan dan meletakkannya pada kedudukan awalnya dan tindakan lain yang mesti dilakukan pada permulaan permainan.
-
Proses permainan. Peringkat ini termasuk objek permainan bergerak, tindakan pemain, menyimpan skor dan tindakan lain yang mesti dilakukan pada frekuensi tertentu atau apabila butang ditekan.
-
Selesai permainan. Peringkat ini termasuk menghentikan animasi, melaporkan menang atau kalah, dan tindakan lain yang mesti dilakukan pada penghujung permainan.
2. Permulaan permainan
Permulaan permainan hanya terdiri daripada dua langkah: Langkah 1: Buat kelas utama permainan. Untuk membangunkan permainan anda sendiri menggunakan enjin permainan CodeGym, anda perlu mencipta kelas yang mewarisi kelasGame
(com.codegym.engine.cell.Game). Ini memberikan kelas anda keupayaan untuk memanggil kaedah enjin permainan, dan memberikan enjin keupayaan untuk memanggil kaedah anda. Sebagai contoh:
import com.codegym.engine.cell.Game;
public class MySuperGame extends Game {
...
}
Langkah 2: Gantikan kaedah permulaan(). Semua tindakan yang diperlukan untuk memulakan permainan akan berlaku dalam kaedah ini: mencipta medan permainan, mencipta objek permainan, dsb. Anda hanya perlu mengisytiharkan kaedah ini dalam kelas yang mewarisi kelas Game
. Sebagai contoh:
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
}
}
Kaedah ini initialize()
adalah sama dengan main()
kaedah: ia adalah titik permulaan untuk semua kod yang ditulis untuk permainan.
3. Mewujudkan padang permainan
Mewujudkan padang permainan juga terdiri daripada hanya dua langkah. Langkah 1: Bahagikan padang permainan kepada sel. Seluruh padang permainan dibahagikan kepada sel oleh enjin permainan. Saiz minimum ialah 3x3; maksimum ialah 100x100. Dimensi adalah skrin permainan adalah malar. Ia boleh dibahagikan kepada bilangan sel yang berbeza. Contohnya, 7 sel lebar dengan 9 sel tinggi: Ambil perhatian bahawa sel dinomborkan bermula dari sudut kiri atas. Untuk menetapkan saiz padang permainan, gunakanvoid setScreenSize(int width, int height)
kaedah. Ia menetapkan saiz padang permainan. Parameternya mewakili bilangan sel secara mendatar (lebar) dan menegak (tinggi). Ia biasanya dipanggil sekali apabila permainan dimulakan. Sebagai contoh:
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);
...
}
}
Semasa menulis permainan, anda mungkin perlu mendapatkan lebar dan ketinggian semasa padang permainan. Untuk melakukan ini, kaedah int getScreenWidth()
dan int getScreenHeight()
akan berguna. Langkah 2: Hidupkan atau matikan grid (pilihan). Jika anda tidak menyukai grid hitam yang memisahkan sel pada medan permainan, anda boleh mematikannya. Kaedah void showGrid(boolean isShow)
menghidupkan dan mematikan grid. Secara lalai, grid dipaparkan. Untuk mematikannya, panggil kaedah ini dengan false sebagai hujah:
showGrid(false);
Keputusan: Untuk menghidupkan semula grid, hubungi:
showGrid(true);
4. Program primitif
Berikut ialah contoh program:
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);
}
}
Dalam contoh ini, medan permainan ditetapkan kepada 3x3, grid dimatikan dan "X" oren separuh saiz sel ditetapkan pada latar belakang biru dalam sel tengah. Ini akan menjadi perkara pertama yang pemain lihat apabila permainan bermula.
5. Bekerja dengan sel-sel padang permainan
Hakikat bahawa kita boleh membahagikan medan permainan kepada sel adalah hebat, tetapi apa yang boleh kita lakukan dengan sel itu sendiri? Anda boleh menetapkan sifat berikut untuk setiap sel medan permainan:- warna sel (warna latar belakang sel);
- teks (teks atau nombor);
- warna teks;
- saiz teks sebagai peratusan saiz sel.
-
void setCellColor(int x, int y, Color color)
— menetapkan warna sel dengan koordinat (x, y):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):Color myColor = getCellColor(2, 0);
-
void setCellValue(int x, int y, String value)
— menetapkan teks sel dengan koordinat (x, y) sama dengan rentetan dalam parameter nilai: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):String s = getCellValue(3, 3); System.out.println(getCellValue(4, 1));
-
void setCellTextSize(int x, int y, int size)
— menetapkan saiz kandungan sel dengan koordinat (x, y). Parameter saiz ialah ketinggian teks sebagai peratusan ketinggian sel:setCellTextSize(2 , 0, 70); // 70% of the cell height
-
int getCellTextSize(int x, int y)
— mengembalikan saiz kandungan sel dengan koordinat (x, y):int size = getCellTextSize(2 , 0);
-
void setCellNumber(int x, int y, int value)
— menetapkan teks sel dengan koordinat (x, y) sama dengan nombor dalam parameter nilai: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, mengembalikan 0: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):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):Color textColor = getCellTextColor(1, 3);
setCellValueEx()
kaedah dengan set parameter yang berbeza:
-
void setCellValueEx(int x, int y, Color cellColor, String value)
— menetapkan warna latar belakang (warna sel) dan kandungan (nilai) sel dengan koordinat (x, y):setCellValueEx(0, 2, Color.BLUE, "56");
-
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor)
— menetapkan warna latar belakang (cellColor), kandungan (nilai), dan warna teks (textColor) sel dengan koordinat (x, y):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 (cellColor), kandungan (nilai), warna teks (textColor), dan saiz teks (textSize) sel dengan koordinat (x, y):setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN, 70);
6. Bekerja dengan warna
IaColor enum
bertanggungjawab untuk warna dalam enjin permainan. Ia mempunyai nilai unik untuk 148 warna. Ia juga mempunyai nilai istimewa (TIADA) yang tidak mewakili warna. Berikut ialah contoh bekerja dengan warna:
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.
Kadangkala anda mungkin perlu mendapatkan susunan semua warna sedia ada. Untuk melakukan ini, gunakan values()
kaedah. Sebagai contoh:
Color[] colors = Color.values(); // The colors variable is assigned an array containing all available colors.
Sangat mudah untuk mendapatkan indeks warna dalam palet:
Color color = Color.RED;
int redIndex = color.ordinal(); // Index of red
int blueIndex = Color.BLUE.ordinal(); // Index of blue
Anda juga boleh mendapatkan warna dengan indeksnya:
Color color = Color.values()[10]; // The color variable is assigned the color with index 10 in the Color enum.
7. Kotak dialog
Pada akhir permainan, anda perlu melaporkan kemenangan atau kekalahan kepada pemain. Untuk melakukan ini, terdapat kaedah khas yang memaparkan kotak dialog pada skrin permainan:
void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)
di sini:
cellColor
ialah warna latar belakang kotak dialog;message
ialah teks mesej;textColor
ialah warna teks mesej;textSize
ialah saiz teks mesej.
8. Kaedah utiliti
Apabila menulis permainan, nombor rawak banyak digunakan. Untuk memudahkan mendapatkan nombor rawak, anda boleh menggunakan kaedah utiliti berikut yang disediakan oleh enjin permainan:-
int getRandomNumber(int max)
— mengembalikan integer rawak daripada 0 hingga (maks-1) termasuk. -
int getRandomNumber(int min, int max)
— mengembalikan integer rawak dari min kepada (maks-1) inklusif.
GO TO FULL VERSION