CodeGym /Java Blog /Acak /Bagian game di CodeGym: Mesin game
John Squirrels
Level 41
San Francisco

Bagian game di CodeGym: Mesin game

Dipublikasikan di grup Acak
"Game" dari CodeGym adalah bagian baru dengan tugas besar yang melibatkan penulisan game komputer populer. Mereka lebih mudah dibuat daripada yang terlihat: setiap proyek dibagi menjadi dua puluh subtugas. Menyelesaikan tugas selangkah demi selangkah, Anda akan menulis game Anda sendiri, lalu Anda dapat menambahkan fitur unik dan membaginya dengan teman. Bagian "Game" di CodeGym: Mesin game - 1Permainan menggunakan mesin permainan CodeGym sederhana . Pada artikel ini, kami akan menjelaskan fitur-fitur utamanya dan seperti apa proses penulisan game itu.

1. Perkenalan

Bagi pengembang, ada tiga tahapan implementasi game komputer:
  1. Inisialisasi game — Tahap ini terdiri dari tindakan persiapan: mengatur ukuran lapangan permainan, menggambar lapangan permainan, membuat objek permainan dan meletakkannya di posisi awal, dan tindakan lain yang harus dilakukan di awal permainan.

  2. Proses permainan. Tahapan ini meliputi memindahkan objek permainan, aksi pemain, mencatat skor, dan aksi lain yang harus dilakukan pada frekuensi tertentu atau saat tombol ditekan.

  3. Penyelesaian permainan. Tahap ini termasuk menghentikan animasi, melaporkan menang atau kalah, dan tindakan lain yang harus dilakukan di akhir permainan.

2. Inisialisasi permainan

Inisialisasi game hanya terdiri dari dua langkah: Langkah 1: Buat kelas utama game. Untuk mengembangkan game Anda sendiri menggunakan mesin game CodeGym, Anda perlu membuat kelas yang mewarisi Gamekelas tersebut (com.codegym.engine.cell.Game). Ini memberi kelas Anda kemampuan untuk memanggil metode mesin game, dan memberi mesin kemampuan untuk memanggil metode Anda. Misalnya:

import com.codegym.engine.cell.Game;

public class MySuperGame extends Game {
    ...
}
Langkah 2: Ganti metode inisialisasi (). Semua tindakan yang diperlukan untuk memulai permainan akan terjadi dalam metode ini: membuat lapangan permainan, membuat objek permainan, dll. Anda hanya perlu mendeklarasikan metode ini di kelas yang mewarisi kelas tersebut Game. Misalnya:

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
    }
}
Metodenya initialize()analog dengan main()metode: ini adalah titik awal untuk semua kode yang ditulis untuk permainan.

3. Menciptakan lapangan bermain

Membuat lapangan bermain juga hanya terdiri dari dua langkah. Langkah 1: Bagi lapangan bermain menjadi beberapa sel. Seluruh lapangan bermain dibagi menjadi beberapa sel oleh mesin game. Ukuran minimum adalah 3x3; maksimum adalah 100x100. Dimensi layar game konstan. Ini dapat dibagi menjadi jumlah sel yang berbeda. Misalnya, lebar 7 sel dengan tinggi 9 sel: Bagian "Game" di CodeGym: Mesin game - 2Perhatikan bahwa sel diberi nomor mulai dari pojok kiri atas. Untuk mengatur ukuran lapangan bermain, gunakan void setScreenSize(int width, int height)metode ini. Ini menentukan ukuran lapangan bermain. Parameternya mewakili jumlah sel secara horizontal (lebar) dan vertikal (tinggi). Biasanya dipanggil sekali saat permainan dimulai. Misalnya:

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);
        ...
    }
}
Saat menulis game, Anda mungkin perlu mengetahui lebar dan tinggi lapangan bermain saat ini. Untuk melakukan ini, metode int getScreenWidth()dan int getScreenHeight()akan berguna. Langkah 2: Nyalakan atau matikan grid (opsional). Jika Anda tidak menyukai kisi hitam yang memisahkan sel di lapangan permainan, Anda dapat mematikannya. Metode ini void showGrid(boolean isShow)menghidupkan dan mematikan kisi. Secara default, grid ditampilkan. Untuk mematikannya, panggil metode ini dengan false sebagai argumennya:

showGrid(false);
Hasil: Bagian "Game" di CodeGym: Mesin game - 3Untuk menghidupkan kembali kisi, hubungi:

showGrid(true);

4. Program primitif

Berikut contoh programnya:

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, bidang permainan disetel ke 3x3, kisi dimatikan, dan "X" oranye setengah ukuran sel disetel dengan latar belakang biru di sel tengah. Ini akan menjadi hal pertama yang dilihat pemain saat permainan dimulai.

5. Bekerja dengan sel-sel di lapangan bermain

Fakta bahwa kita dapat membagi lapangan bermain menjadi sel memang bagus, tetapi apa yang dapat kita lakukan dengan sel itu sendiri? Anda dapat mengatur properti berikut untuk setiap sel lapangan bermain:
  • warna sel (warna latar belakang sel);
  • teks (teks atau angka);
  • warna teks;
  • ukuran teks sebagai persentase dari ukuran sel.
Mari kita lihat metode untuk bekerja dengan sel-sel di lapangan :
  1. void setCellColor(int x, int y, Color color)— mengatur warna sel dengan koordinat (x, y):

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

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

    
    Color myColor = getCellColor(2, 0);
    

  3. void setCellValue(int x, int y, String value)— menyetel teks sel dengan koordinat (x, y) sama dengan string dalam parameter nilai:

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

  4. String getCellValue(int x, int y)— mengembalikan teks yang terdapat dalam sel dengan koordinat (x, y):

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

  5. void setCellTextSize(int x, int y, int size)— mengatur ukuran isi sel dengan koordinat (x,y). Parameter ukuran adalah tinggi teks sebagai persentase dari tinggi sel:

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

  6. int getCellTextSize(int x, int y)— mengembalikan ukuran isi sel dengan koordinat (x, y):

    
    int size = getCellTextSize(2 , 0);
    

  7. void setCellNumber(int x, int y, int value)— menyetel teks sel dengan koordinat (x, y) sama dengan angka dalam parameter nilai:

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

  8. int getCellNumber(int x, int y)— mengembalikan nomor yang terkandung dalam sel dengan koordinat (x, y). Jika sel tidak berisi angka, kembalikan 0:

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

  9. void setCellTextColor(int x, int y, Color color)— mengatur warna isi (teks) sel dengan koordinat (x, y):

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

  10. Color getCellTextColor(int x, int y)— mengembalikan warna isi (teks) sel dengan koordinat (x, y):

    
    Color textColor = getCellTextColor(1, 3);
    
Untuk kenyamanan, ada beberapa setCellValueEx()metode dengan set parameter yang berbeda:
  1. void setCellValueEx(int x, int y, Color cellColor, String value)— mengatur warna latar belakang (cellColor) dan konten (nilai) sel dengan koordinat (x, y):

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

  2. void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor)— mengatur warna latar belakang (cellColor), isi (value), dan warna teks (textColor) sel dengan koordinat (x, y):

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

  3. void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor, int textSize)— mengatur warna latar belakang (cellColor), isi (value), warna teks (textColor), dan ukuran teks (textSize) sel dengan koordinat (x, y):

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

6. Bekerja dengan warna

Bertanggung Color enumjawab atas warna di mesin game. Ini memiliki nilai unik untuk 148 warna. Ini juga memiliki nilai khusus (NONE) yang tidak mewakili warna. Berikut adalah 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.
Terkadang Anda mungkin perlu mendapatkan array dari semua warna yang ada. Untuk melakukan ini, gunakan values()metode ini. Misalnya:

Color[] colors = Color.values();  // The colors variable is assigned an array containing all available colors.
Sangat mudah untuk mendapatkan indeks warna di palet:

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

int blueIndex = Color.BLUE.ordinal();  // Index of blue
Anda juga bisa 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

Di akhir permainan, Anda harus melaporkan kemenangan atau kekalahan kepada pemain. Untuk melakukan ini, ada metode khusus yang menampilkan kotak dialog di layar game:

void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)
Di Sini:
  • cellColoradalah warna latar belakang kotak dialog;
  • messageadalah teks pesan;
  • textColoradalah warna teks pesan;
  • textSizeadalah ukuran teks pesan.
Kotak dialog menutup dengan sendirinya jika pengguna menekan tombol spasi.

8. Metode utilitas

Saat menulis game, angka acak banyak digunakan. Untuk memudahkan mendapatkan angka acak, Anda dapat menggunakan metode utilitas berikut yang disediakan oleh mesin game:
  1. int getRandomNumber(int max)— mengembalikan bilangan bulat acak dari 0 hingga (maks-1) inklusif.

  2. int getRandomNumber(int min, int max)— mengembalikan bilangan bulat acak dari min ke (max-1) inklusif.

Itu saja untuk saat ini! Jika Anda ingin mempelajari lebih lanjut tentang bagian "Permainan", berikut beberapa dokumentasi bermanfaat yang dapat membantu:
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION