JavaRush /Blog Jawa /Random-JV /Bagean "Game" ing JavaRush: Mesin game

Bagean "Game" ing JavaRush: Mesin game

Diterbitake ing grup
"Game" saka JavaRush minangka bagean anyar sing ngemot proyek tugas gedhe kanggo nulis game komputer populer. Nggawe luwih gampang tinimbang sing katon: saben proyek dipérang dadi rong rolas subtugas. Kanthi ngrampungake tugas kanthi langkah, sampeyan bakal nulis game sampeyan, banjur sampeyan bisa nambah "fitur" unik lan bareng karo kanca-kanca. BabGame kasebut nggunakake mesin game JavaRush sing prasaja . Ing artikel iki kita bakal pirembagan bab fitur tombol lan apa proses nulis game katon kaya.
  1. Pambuka
  2. Inisialisasi game
  3. Nggawe lapangan dolanan
  4. Program primitif
  5. Nggarap sel saka lapangan playing
  6. Nggarap werna
  7. Kothak dialog
  8. Metode Utilitas
  9. watesan engine Game

1. Pambuka

Ana telung tahap ing implementasine game komputer saka pangembang:
  1. Inisialisasi game yaiku tumindak persiapan: nyetel ukuran lan gambar lapangan, nggawe lan nginstal obyek game ing posisi awal, uga tumindak liyane sing kudu ditindakake ing wiwitan game.

  2. Proses game. Iki kalebu gerakan obyek game, tumindak pamuter, accounting kanggo TCTerms entuk, uga tumindak liyane sing kudu dileksanakake ing interval tartamtu utawa kanthi mencet tombol.

  3. Mungkasi game. Iki kalebu animasi mandeg, nglaporake kamenangan utawa kekalahan, lan tumindak liyane sing kudu ditindakake ing pungkasan game.

2. Inisialisasi game

Initializing game kasusun saka mung rong langkah:

Langkah 1: nggawe kelas game utama.

Kanggo ngembangake game sampeyan adhedhasar mesin game JavaRush, sampeyan kudu nggawe kelas lan entuk warisan saka kelas Game (com.javarush.engine.cell.Game). Iki bakal menehi kelas sampeyan bisa nelpon cara ing mesin game, lan kemampuan kanggo mesin nelpon cara sampeyan. Tuladha:
import com.javarush.engine.cell.Game;

public class MySuperGame extends Game {
    ...
}

Langkah 2: ngganti cara initialize ().

Ing metode iki, kabeh tumindak sing dibutuhake kanggo miwiti game bakal ditindakake: nggawe lapangan dolanan, nggawe obyek game, lsp. Sampeyan mung kudu ngumumake cara iki ing kelas sing diwenehi warisan saka kelas Game . Tuladha:
import com.javarush.engine.cell.Game;

public class MySuperGame extends Game {

    @Override
    public void initialize() {
        //  Тут выполняем все действия по инициализации игры и ее an objectов
    }
}
Cara initialize () iku analog saka cara utama () : iku ngendi kabeh kode ditulis kanggo game wiwit kaleksanan.

3. Nggawe lapangan dolanan

Nggawe lapangan playing uga kasusun saka mung rong langkah.

Langkah 1: dibagi lapangan playing menyang sel.

Kabeh lapangan muter dipérang dadi sel dening mesin game. Ukuran minimal 3x3, maksimal 100x100. Layar game wis ukuran pancet. Bisa dipérang dadi macem-macem nomer sel. Contone, jembaré 7 lan dhuwur 9:
Bab
Elinga yen nomer sel diwiwiti saka pojok kiwa ndhuwur. Kanggo nyetel ukuran lapangan, gunakake metode void setScreenSize(int width, int height) . Iku nyetel ukuran lapangan playing. Dibutuhake minangka paramèter nomer sel kanthi horisontal (jembar) lan vertikal (dhuwur). Biasane disebut sapisan nalika game diwiwiti. Tuladha:
import com.javarush.engine.cell.Game;

public class MySuperGame extends Game {

    @Override
    public void initialize() {
       //  задали размер поля 7x9 клеток
       setScreenSize(7, 9);
        ...
    }
}
Nalika nulis game, sampeyan bisa uga kudu njaluk jembaré saiki lan dhuwur saka lapangan playing. Cara int getScreenWidth () lan int getScreenHeight () migunani kanggo iki .

Langkah 2: Nguripake utawa mateni kothak (opsional).

Yen sampeyan ora kaya kothak ireng sing misahake sel ing lapangan playing, sampeyan bisa mateni. Metode void showGrid(boolean isShow) nguripake lan mateni sel sing misahake kothak. Kanthi gawan, kothak ditampilake. Kanggo mateni, nelpon metode iki nganggo parameter palsu:
showGrid(false);
asil:
Bab
Kanggo nguripake kothak maneh, nelpon:
showGrid(true);

4. Program primitif

Contoh program:
public class MySuperGame extends Game {

    @Override
    public void initialize() {

        //  Создаем игровое поле 3x3 клетки
        setScreenSize(3, 3);
        //  Выключаем отображение сетки
        showGrid(false);
        //  Меняем фон центральной клетки на синий, и отображаем в ней “Х”
        setCellValueEx(1, 1, Color.BLUE, "X", Color.ORANGE, 50);
    }
}
Ing conto iki, ukuran lapangan muter disetel kanggo 3x3, tampilan kothak dipateni, lan oranye setengah sel ukuran simbol "X" disetel ing tengah ing latar mburi biru. Iki bakal dadi bab pisanan sing pemain weruh nalika miwiti game.

5. Nggarap sel saka lapangan playing

Kasunyatan manawa kita bisa mbagi lapangan dolanan dadi sel sing apik, nanging apa sing bisa ditindakake kanthi sel kasebut? Saben sel ing lapangan dolanan bisa disetel:
  • werna sel (warna latar mburi sel);
  • teks (teks utawa nomer);
  • werna teks;
  • ukuran teks minangka persentasi relatif kanggo ukuran sel.
Ayo nimbang cara kanggo nggarap sel ing lapangan dolanan :
  1. void setCellColor(int x, int y, Warna warna) — nyetel warna sel kanthi koordinat (x, y):

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

  2. Warna getCellColor(int x, int y) - ngasilake werna sel kanthi koordinat (x, y):

    Color myColor = getCellColor(2, 0);

  3. void setCellValue(int x, int y, String value) - nempatake nilai teks ing sel kanthi koordinat (x, y):

    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, ukuran int) - nyetel ukuran isi ing sel kanthi koordinat (x, y). ukuran - dhuwur teks minangka persentase dhuwur sel:

    setCellTextSize(2 , 0, 70); //  70% высоты клетки

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

    int size = getCellTextSize(2 , 0);

  7. void setCellNumber(int x, int y, int value) - nempatake nilai angka ing sel kanthi koordinat (x, y):

    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, Warna warna) — nyetel warna isi (teks) ing sel kanthi koordinat (x, y):

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

  10. Warna getCellTextColor(int x, int y) - ngasilake werna isi (teks) ing sel kanthi koordinat (x, y):

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

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

  2. void setCellValueEx(int ​​x, int y, Color cellColor, String value, Color textColor) — nyetel sel kanthi koordinat (x, y) latar mburi cellColor, isi lan isi teks Warna:

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

  3. void setCellValueEx(int ​​x, int y, Color cellColor, String value, Color textColor, int textSize); — nyetel sel kanthi koordinat (x, y) warna latar mburi selWarna, nilai isi, isi warna teksWarna lan ukuran isi teksUkuran:

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

6. Nggarap werna

Werna ing mesin game dikontrol dening enum Warna , sing ngemot nilai unik kanggo 148 warna. Lan uga nilai khusus NONE - ora ana warna. Tuladha nggarap warna:
Color myColor = Color.WHITE;  //  переменной myColor присваивается белый цвет.
Color redColor = Color.RED; //  переменной redColor присваивается красный цвет.
Color blueColor = Color.BLUE; //  переменной blueColor присваивается синий цвет.
Kadhangkala sampeyan pengin njaluk macem-macem warna sing ana. Kanggo nindakake iki, gunakake metode values() . Tuladhane:
//  переменной colors присваивается массив, содержащий все доступные цвета.
Color[] colors = Color.values();
Entuk nomer warna ing palet gampang banget:
Color color = Color.RED;
int redIndex = color.ordinal(); //  Номер красного цвета

int blueIndex = Color.BLUE.ordinal(); //  Номер синего цвета
Sampeyan uga bisa entuk warna kanthi nomer:
//  переменной color присваивается цвет с индексом 10 из enum Color.
Color color = Color.values()[10];

7. Kothak dialog

Ing pungkasan game, pemain kudu dilaporake babagan kamenangan utawa kekalahan. Ana cara khusus kanggo iki sing nampilake kothak dialog ing layar game:
void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)
kene:
  • cellColor - werna latar mburi kothak dialog;
  • pesen - pesen teks;
  • textColor — werna teks pesen;
  • textSize — ukuran teks pesen.
Dialog nutup dhewe yen pangguna menet spasi.

8. Metode Utilitas

Nomer acak asring digunakake nalika nulis game. Kanggo nggawe luwih gampang kanggo njupuk nomer acak, sampeyan bisa nggunakake cara mesin kethokan:
  1. int getRandomNumber(int max) - ngasilake integer acak saka 0 nganti (maks-1) kalebu.

  2. int getRandomNumber(int min, int max) - ngasilake integer acak saka min nganti (maks-1) kalebu.

9. watesan mesin Game

Kanggo mbukak game ing situs, lagi diterjemahake menyang JavaScript ing server. Ing babagan iki, ana sawetara larangan. Ing tartamtu, nalika nulis game nggunakake mesin JavaRush, sampeyan ora bisa nganggo file, utawa nggunakake kabeh cara saka kelas System , kajaba currentTimeMillis () , setOut () , setErr () , arrayscopy () . Sampeyan uga bisa nggunakake kolom err lan out . Kanthi nglanggar Watesan iki, game, mesthi, bisa disusun lan mbukak, nanging ora bakal bisa kanggo nerbitaké. Sampeyan uga ora bakal bisa nerbitake game kanthi puteran tanpa wates. Iku kabeh! Yen sampeyan pengin sinau luwih lengkap babagan bagean Game, iki sawetara dokumentasi migunani sing bisa mbantu:
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION