KodeGym/Blog Jawa/Acak/bagean Games ing CodeGym: Game engine
John Squirrels
tingkat
San Francisco

bagean Games ing CodeGym: Game engine

Diterbitake ing grup
"Game" saka CodeGym minangka bagean anyar kanthi tugas gedhe sing kalebu nulis game komputer populer. Padha luwih gampang kanggo nggawe saka misale jek: saben project dipérang dadi rong puluh subtugas. Rampung tugas langkah dening langkah, sampeyan bakal nulis game dhewe, banjur sampeyan bisa nambah fitur unik lan nuduhake karo kanca-kanca. Bagean "Game" ing CodeGym: Game engine - 1Game kasebut nggunakake mesin game CodeGym sing prasaja . Ing artikel iki, kita bakal njlèntrèhaké fitur utama lan carane proses nulis game.

1. Pambuka

Kanggo pangembang, ana telung tahap kanggo implementasi game komputer:
  1. Inisialisasi game - Tahap iki kalebu tumindak persiapan: nyetel ukuran lapangan dolanan, nggambar lapangan dolanan, nggawe obyek game lan dilebokake ing posisi awal, lan tumindak liyane sing kudu ditindakake ing wiwitan game.

  2. Proses game. Tahap iki kalebu obyek game obah, tumindak pemain, njaga skor, lan tumindak liyane sing kudu ditindakake kanthi frekuensi tartamtu utawa nalika tombol ditekan.

  3. Game rampung. Tahap iki kalebu animasi mandheg, nglaporake menang utawa kalah, lan tumindak liyane sing kudu ditindakake ing pungkasan game.

2. Initialization game

initialization game kasusun saka mung rong langkah: langkah 1: Nggawe kelas utama game. Kanggo ngembangake game dhewe nggunakake mesin game CodeGym, sampeyan kudu nggawe kelas sing marisi kelas Game(com.codegym.engine.cell.Game). Iki menehi kelas sampeyan bisa nelpon cara mesin game, lan menehi mesin kemampuan kanggo nelpon cara sampeyan. Tuladhane:
import com.codegym.engine.cell.Game;

public class MySuperGame extends Game {
    ...
}
Langkah 2: Ganti metode initialize (). Kabeh tumindak sing dibutuhake kanggo miwiti game bakal kelakon ing cara iki: nggawe lapangan playing, nggawe obyek game, etc.. Sampeyan mung kudu wara-wara cara iki ing kelas sing oleh warisan kelas Game. Tuladhane:
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
    }
}
Cara initialize()iku analog kanggo main()cara: iku titik wiwitan kanggo kabeh kode ditulis kanggo game.

3. Nggawe lapangan dolanan

Nggawe lapangan playing uga kasusun saka mung rong langkah. Langkah 1: Dibagi lapangan dolanan dadi sel. Kabeh lapangan muter dipérang dadi sel dening mesin game. Ukuran minimal 3x3; maksimal 100x100. Ukuran layar game tetep. Bisa dipérang dadi macem-macem nomer sel. Contone, 7 sel amba karo 9 sel dhuwur: Bagean "Game" ing CodeGym: Game engine - 2Elinga yen sel diwenehi nomer wiwit saka sudhut kiwa ndhuwur. Kanggo nyetel ukuran lapangan playing, nggunakake void setScreenSize(int width, int height)cara. Iku nyetel ukuran lapangan playing. Parameter kasebut nuduhake jumlah sel kanthi horisontal (jembar) lan vertikal (dhuwur). Biasane disebut sapisan nalika game diwiwiti. Tuladhane:
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);
        ...
    }
}
Nalika nulis game, sampeyan bisa uga kudu njaluk jembaré lan dhuwur lapangan playing saiki. Kanggo nindakake iki, cara int getScreenWidth()lan int getScreenHeight()cara bakal migunani. Langkah 2: Nguripake utawa mateni kothak (opsional). Yen sampeyan ora kaya kothak ireng misahake sel ing lapangan playing, sampeyan bisa mateni. Cara kasebut void showGrid(boolean isShow)nguripake lan mateni kothak. Kanthi gawan, kothak ditampilake. Kanggo mateni, nelpon metode iki kanthi salah minangka argumen:
showGrid(false);
Asil: bagean "Games" ing CodeGym: Game engine - 3Kanggo nguripake kothak maneh, nelpon:
showGrid(true);

4. Program primitif

Punika conto 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);
    }
}
Ing conto iki, lapangan game disetel kanggo 3x3, kothak dipateni, lan oranye "X" setengah ukuran sel disetel ing latar mburi biru ing sel tengah. Iki bakal dadi bab pisanan sing pemain weruh nalika game diwiwiti.

5. Nggarap sel saka lapangan playing

Kasunyatan manawa kita bisa mbagi lapangan dolanan dadi sel sing apik, nanging apa sing bisa kita lakoni karo sel kasebut? Sampeyan bisa nyetel properti ing ngisor iki kanggo saben sel ing lapangan dolanan:
  • werna sel (warna latar mburi sel);
  • teks (teks utawa nomer);
  • werna teks;
  • ukuran teks minangka persentasi saka ukuran sel.
Ayo goleki cara kanggo nggarap sel ing lapangan dolanan :
  1. void setCellColor(int x, int y, Color color)- nyetel warna sel kanthi 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)- ngasilake warna sel kanthi koordinat (x, y):

    Color myColor = getCellColor(2, 0);

  3. void setCellValue(int x, int y, String value)- nyetel teks sel kanthi koordinat (x, y) padha karo senar ing parameter nilai:

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

  4. String getCellValue(int x, int y)- ngasilake teks sing ana ing sel kanthi koordinat (x, y):

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

  5. void setCellTextSize(int x, int y, int size)- nyetel ukuran isi sel kanthi koordinat (x, y). Parameter ukuran yaiku dhuwur teks minangka persentase dhuwur sel:

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

  6. int getCellTextSize(int x, int y)- ngasilake ukuran isi sel kanthi koordinat (x, y):

    int size = getCellTextSize(2 , 0);

  7. void setCellNumber(int x, int y, int value)- nyetel teks sel kanthi koordinat (x, y) padha karo nomer ing 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)- ngasilake nomer sing ana ing sel kanthi koordinat (x, y). Yen sel ora ngemot nomer, ngasilake 0:

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

  9. void setCellTextColor(int x, int y, Color color)- nyetel warna isi (teks) sel kanthi koordinat (x, y):

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

  10. Color getCellTextColor(int x, int y)- ngasilake warna isi (teks) sel kanthi koordinat (x, y):

    Color textColor = getCellTextColor(1, 3);
Kanggo penak, ana sawetara setCellValueEx()cara kanthi macem-macem paramèter:
  1. void setCellValueEx(int x, int y, Color cellColor, String value)- nyetel werna latar mburi (warna sel) lan isi (nilai) sel kanthi koordinat (x, y):

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

  2. void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor)- nyetel werna latar mburi (warna sel), isi (nilai), lan werna teks (warna teks) sel kanthi 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)— nyetel werna latar mburi (warna sel), isi (nilai), werna teks (warna teks), lan ukuran teks (ukuran teks) sel kanthi koordinat (x, y):

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

6. Nggarap werna

Ing Color enumtanggung jawab kanggo werna ing mesin game. Nduweni nilai unik kanggo 148 warna. Uga nduweni nilai khusus (NONE) sing ora nuduhake warna. Mangkene conto nggarap 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.
Kadhangkala, sampeyan kudu entuk macem-macem warna sing wis ana. Kanggo nindakake iki, gunakake values()metode kasebut. Tuladhane:
Color[] colors = Color.values();  // The colors variable is assigned an array containing all available colors.
Gampang banget kanggo entuk indeks warna ing palet:
Color color = Color.RED;
int redIndex = color.ordinal();  // Index of red

int blueIndex = Color.BLUE.ordinal();  // Index of blue
Sampeyan uga bisa entuk warna kanthi indeks:
Color color = Color.values()[10];  // The color variable is assigned the color with index 10 in the Color enum.

7. Kothak dialog

Ing pungkasan game, sampeyan kudu laporan menang utawa mundhut kanggo pamuter. Kanggo nindakake iki, ana cara khusus sing nampilake kothak dialog ing layar game:
void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)
kene:
  • cellColoryaiku werna latar mburi kothak dialog;
  • messageyaiku teks pesen;
  • textColoryaiku warna teks pesen;
  • textSizeyaiku ukuran teks pesen.
Kothak dialog nutup dhewe yen pangguna menet spasi.

8. Metode Utilitas

Nalika nulis game, nomer acak digunakake akeh. Kanggo nggampangake entuk nomer acak, sampeyan bisa nggunakake cara sarana ing ngisor iki sing diwenehake dening mesin game:
  1. int getRandomNumber(int max)- ngasilake integer acak saka 0 kanggo (max-1) klebu.

  2. int getRandomNumber(int min, int max)- ngasilake integer acak saka min kanggo (max-1) klebu.

Sing kabeh kanggo saiki! Yen sampeyan pengin sinau luwih lengkap babagan bagean "Game", iki sawetara dokumentasi migunani sing bisa mbantu:
Komentar
  • Popular
  • Anyar
  • lawas
Sampeyan kudu mlebu kanggo ninggalake komentar
Kaca iki durung duwe komentar