CodeGym/Java Blog/Random/Seksyon ng mga laro sa CodeGym: Game engine
John Squirrels
Antas
San Francisco

Seksyon ng mga laro sa CodeGym: Game engine

Nai-publish sa grupo
Ang "Mga Laro" mula sa CodeGym ay isang bagong seksyon na may malalaking gawain na kinabibilangan ng pagsusulat ng mga sikat na laro sa computer. Mas madaling gawin ang mga ito kaysa sa tila: ang bawat proyekto ay nahahati sa dalawampung subtask. Pagkumpleto ng mga gawain nang sunud-sunod, susulat ka ng sarili mong laro, at pagkatapos ay maaari kang magdagdag ng mga natatanging feature at ibahagi ito sa mga kaibigan. "Mga Laro" na seksyon sa CodeGym: Game engine - 1Ang mga laro ay gumagamit ng simpleng CodeGym game engine . Sa artikulong ito, ilalarawan namin ang mga pangunahing tampok nito at kung ano ang hitsura ng proseso ng pagsulat ng laro.

1. Panimula

Para sa developer, mayroong tatlong yugto sa pagpapatupad ng isang laro sa computer:
  1. Pagsisimula ng laro — Binubuo ang yugtong ito ng mga paghahandang aksyon: pagtatakda ng laki ng playing field, pagguhit ng playing field, paglikha ng mga bagay sa laro at paglalagay sa mga ito sa kanilang mga unang posisyon, at iba pang mga aksyon na dapat gawin sa simula ng laro.

  2. Proseso ng laro. Kasama sa yugtong ito ang paglipat ng mga bagay sa laro, pagkilos ng manlalaro, pagpapanatili ng marka, at iba pang pagkilos na dapat gawin sa isang partikular na dalas o kapag pinindot ang mga button.

  3. Pagkumpleto ng laro. Kasama sa yugtong ito ang paghinto ng animation, pag-uulat ng panalo o pagkatalo, at iba pang mga aksyon na dapat gawin sa pagtatapos ng laro.

2. Pagsisimula ng laro

Ang pagsisimula ng laro ay binubuo lamang ng dalawang hakbang: Hakbang 1: Gumawa ng pangunahing klase ng laro. Upang bumuo ng sarili mong laro gamit ang CodeGym game engine, kailangan mong lumikha ng klase na magmamana ng Gameklase (com.codegym.engine.cell.Game). Nagbibigay ito sa iyong klase ng kakayahang tumawag sa mga pamamaraan ng engine ng laro, at nagbibigay sa makina ng kakayahang tawagan ang iyong mga pamamaraan. Halimbawa:
import com.codegym.engine.cell.Game;

public class MySuperGame extends Game {
    ...
}
Hakbang 2: I-override ang paraan ng pagsisimula(). Ang lahat ng mga aksyon na kinakailangan upang simulan ang laro ay mangyayari sa paraang ito: paglikha ng playing field, paggawa ng mga bagay sa laro, atbp. Kailangan mo lang ideklara ang paraang ito sa klase na nagmamana sa klase Game. Halimbawa:
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
    }
}
Ang initialize()pamamaraan ay kahalintulad sa main()pamamaraan: ito ang panimulang punto para sa lahat ng code na isinulat para sa laro.

3. Paglikha ng isang playing field

Ang paglikha ng isang playing field ay binubuo lamang ng dalawang hakbang. Hakbang 1: Hatiin ang playing field sa mga cell. Ang buong larangan ng paglalaro ay nahahati sa mga cell ng engine ng laro. Ang pinakamababang sukat ay 3x3; ang maximum ay 100x100. Ang mga sukat ng screen ng laro ay pare-pareho. Maaari itong hatiin sa iba't ibang bilang ng mga cell. Halimbawa, 7 cell ang lapad at 9 na cell ang taas: seksyong "Mga Laro" sa CodeGym: Game engine - 2Tandaan na ang mga cell ay binibilangan simula sa kaliwang sulok sa itaas. Para itakda ang laki ng playing field, gamitin ang void setScreenSize(int width, int height)paraan. Itinatakda nito ang laki ng larangan ng paglalaro. Ang mga parameter nito ay kumakatawan sa bilang ng mga cell nang pahalang (lapad) at patayo (taas). Karaniwan itong tinatawag nang isang beses kapag nagsimula ang laro. Halimbawa:
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);
        ...
    }
}
Kapag nagsusulat ng laro, maaaring kailanganin mong kunin ang kasalukuyang lapad at taas ng playing field. Upang gawin ito, ang int getScreenWidth()at int getScreenHeight()mga pamamaraan ay darating sa madaling gamiting. Hakbang 2: I-on o i-off ang grid (opsyonal). Kung hindi mo gusto ang itim na grid na naghihiwalay sa mga cell sa playing field, maaari mo itong i-off. Ino-on at i-off ng void showGrid(boolean isShow)pamamaraan ang grid. Bilang default, ipinapakita ang grid. Upang i-off ito, tawagan ang paraang ito na may false bilang argumento:
showGrid(false);
Resulta: seksyong "Mga Laro" sa CodeGym: Game engine - 3Upang i-on muli ang grid, tumawag sa:
showGrid(true);

4. Isang primitive na programa

Narito ang isang halimbawa ng isang programa:
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);
    }
}
Sa halimbawang ito, ang field ng laro ay nakatakda sa 3x3, ang grid ay naka-off, at isang orange na "X" ang kalahati ng laki ng cell ay nakatakda sa isang asul na background sa gitnang cell. Ito ang unang makikita ng manlalaro kapag nagsimula ang laro.

5. Paggawa gamit ang mga cell ng playing field

Ang katotohanan na maaari nating hatiin ang larangan ng paglalaro sa mga cell ay mahusay, ngunit ano ang maaari nating gawin sa mga cell mismo? Maaari mong itakda ang mga sumusunod na katangian para sa bawat cell ng playing field:
  • kulay ng cell (kulay ng background ng cell);
  • teksto (teksto o numero);
  • Kulay ng teksto;
  • laki ng teksto bilang isang porsyento ng laki ng cell.
Tingnan natin ang mga pamamaraan para sa pagtatrabaho sa mga cell ng playing field :
  1. void setCellColor(int x, int y, Color color)— nagtatakda ng kulay ng cell na may mga coordinate (x, y):

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

  2. Color getCellColor(int x, int y)— ibinabalik ang kulay ng cell na may mga coordinate (x, y):

    Color myColor = getCellColor(2, 0);

  3. void setCellValue(int x, int y, String value)— nagtatakda ng text ng cell na may mga coordinate (x, y) na katumbas ng string sa value parameter:

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

  4. String getCellValue(int x, int y)— ibinabalik ang tekstong nakapaloob sa cell na may mga coordinate (x, y):

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

  5. void setCellTextSize(int x, int y, int size)— nagtatakda ng laki ng mga nilalaman ng cell na may mga coordinate (x, y). Ang parameter ng laki ay ang taas ng teksto bilang isang porsyento ng taas ng cell:

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

  6. int getCellTextSize(int x, int y)— ibinabalik ang laki ng mga nilalaman ng cell na may mga coordinate (x, y):

    int size = getCellTextSize(2 , 0);

  7. void setCellNumber(int x, int y, int value)— itinatakda ang teksto ng cell na may mga coordinate (x, y) na katumbas ng numero sa value parameter:

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

  8. int getCellNumber(int x, int y)— ibinabalik ang numerong nakapaloob sa cell na may mga coordinate (x, y). Kung ang cell ay walang numero, nagbabalik ng 0:

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

  9. void setCellTextColor(int x, int y, Color color)— nagtatakda ng kulay ng mga nilalaman (teksto) ng cell na may mga coordinate (x, y):

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

  10. Color getCellTextColor(int x, int y)— ibinabalik ang kulay ng mga nilalaman (teksto) ng cell na may mga coordinate (x, y):

    Color textColor = getCellTextColor(1, 3);
Para sa kaginhawahan, mayroong ilang setCellValueEx()mga pamamaraan na may iba't ibang hanay ng mga parameter:
  1. void setCellValueEx(int x, int y, Color cellColor, String value)— nagtatakda ng kulay ng background (cellColor) at mga nilalaman (value) ng cell na may mga coordinate (x, y):

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

  2. void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor)— nagtatakda ng kulay ng background (cellColor), nilalaman (value), at kulay ng text (textColor) ng cell na may mga coordinate (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)— nagtatakda ng kulay ng background (cellColor), nilalaman (value), kulay ng text (textColor), at laki ng text (textSize) ng cell na may mga coordinate (x, y):

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

6. Paggawa gamit ang kulay

Ang Color enummay pananagutan para sa mga kulay sa engine ng laro. Ito ay may natatanging mga halaga para sa 148 mga kulay. Mayroon din itong espesyal na halaga (WALA) na kumakatawan sa walang kulay. Narito ang isang halimbawa ng pagtatrabaho sa kulay:
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.
Minsan maaaring kailanganin mong kumuha ng hanay ng lahat ng umiiral na kulay. Upang gawin ito, gamitin ang values()pamamaraan. Halimbawa:
Color[] colors = Color.values();  // The colors variable is assigned an array containing all available colors.
Napakadaling makakuha ng index ng kulay sa palette:
Color color = Color.RED;
int redIndex = color.ordinal();  // Index of red

int blueIndex = Color.BLUE.ordinal();  // Index of blue
Maaari ka ring makakuha ng isang kulay sa pamamagitan ng index nito:
Color color = Color.values()[10];  // The color variable is assigned the color with index 10 in the Color enum.

7. Mga dialog box

Sa pagtatapos ng laro, kailangan mong mag-ulat ng panalo o pagkatalo sa manlalaro. Upang gawin ito, mayroong isang espesyal na paraan na nagpapakita ng isang dialog box sa screen ng laro:
void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)
dito:
  • cellColoray ang kulay ng background ng dialog box;
  • messageay ang teksto ng mensahe;
  • textColoray ang kulay ng teksto ng mensahe;
  • textSizeay ang laki ng text ng mensahe.
Magsasara ang dialog box kung pinindot ng user ang space bar.

8. Mga pamamaraan ng utility

Kapag nagsusulat ng mga laro, ang mga random na numero ay madalas na ginagamit. Upang gawing mas madali ang pagkuha ng mga random na numero, maaari mong gamitin ang mga sumusunod na pamamaraan ng utility na ibinigay ng engine ng laro:
  1. int getRandomNumber(int max)— nagbabalik ng random na integer mula 0 hanggang (max-1) kasama.

  2. int getRandomNumber(int min, int max)— nagbabalik ng random na integer mula min hanggang (max-1) kasama.

Yun lang muna! Kung gusto mong matuto nang higit pa tungkol sa seksyong "Mga Laro," narito ang ilang kapaki-pakinabang na dokumentasyon na makakatulong:
Mga komento
  • Sikat
  • Bago
  • Luma
Dapat kang naka-sign in upang mag-iwan ng komento
Wala pang komento ang page na ito