
1. Panimula
Para sa developer, mayroong tatlong yugto sa pagpapatupad ng isang laro sa computer:-
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.
-
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.
-
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 ngGame
klase (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:
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: 
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.
-
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);
-
Color getCellColor(int x, int y)
— ibinabalik ang kulay ng cell na may mga coordinate (x, y):Color myColor = getCellColor(2, 0);
-
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, "");
-
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));
-
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
-
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);
-
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);
-
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));
-
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);
-
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);
setCellValueEx()
mga pamamaraan na may iba't ibang hanay ng mga parameter:
-
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");
-
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);
-
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
AngColor enum
may 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:
cellColor
ay ang kulay ng background ng dialog box;message
ay ang teksto ng mensahe;textColor
ay ang kulay ng teksto ng mensahe;textSize
ay ang laki ng text ng mensahe.
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:-
int getRandomNumber(int max)
— nagbabalik ng random na integer mula 0 hanggang (max-1) kasama. -
int getRandomNumber(int min, int max)
— nagbabalik ng random na integer mula min hanggang (max-1) kasama.
GO TO FULL VERSION