- Panimula
- Pagsisimula ng laro
- Paglikha ng isang larangan ng paglalaro
- Primitive na programa
- Paggawa gamit ang mga cell ng playing field
- Paggawa gamit ang kulay
- Mga dialog box
- Mga Paraan ng Utility
- Mga limitasyon ng engine ng laro
1. Panimula
Mayroong tatlong yugto sa pagpapatupad ng laro sa computer sa bahagi ng developer:- Ang pagsisimula ng laro ay mga aksyong paghahanda: pagtatakda ng laki at pagguhit ng larangan ng paglalaro, paglikha at pag-install ng mga bagay sa laro sa paunang posisyon, pati na rin ang iba pang mga aksyon na dapat gawin sa simula ng laro.
- Proseso ng laro. Kabilang dito ang paggalaw ng mga bagay sa laro, mga aksyon ng manlalaro, pag-account para sa mga puntos na nakuha, pati na rin ang iba pang mga aksyon na dapat gawin sa ilang partikular na pagitan o sa pamamagitan ng pagpindot sa mga pindutan.
- Pagtatapos ng laro. Kabilang dito ang paghinto ng mga animation, pag-uulat ng tagumpay o pagkatalo, at iba pang mga aksyon na kailangang gawin sa pagtatapos ng laro.
2. Pagsisimula ng laro
Ang pagsisimula ng laro ay binubuo lamang ng dalawang hakbang:Hakbang 1: lumikha ng pangunahing klase ng laro.
Upang mabuo ang iyong laro batay sa JavaRush game engine, kailangan mong lumikha ng isang klase at magmana nito mula sa klase ng Laro (com.javarush.engine.cell.Game). Bibigyan nito ang iyong klase ng kakayahang tumawag ng mga pamamaraan sa game engine, at ng kakayahan para sa engine na tawagan ang iyong mga pamamaraan. Halimbawa:import com.javarush.engine.cell.Game;
public class MySuperGame extends Game {
...
}
Hakbang 2: i-override ang initialize() na paraan.
Sa pamamaraang ito, ang lahat ng mga aksyon na kinakailangan upang simulan ang laro ay magaganap: paglikha ng larangan ng paglalaro, paglikha ng mga bagay sa laro, atbp. Kailangan mo lang ideklara ang paraang ito sa isang klase na nagmana mula sa klase ng Laro . Halimbawa:import com.javarush.engine.cell.Game;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Тут выполняем все действия по инициализации игры и ее an objectов
}
}
Ang initialize() method ay isang analogue ng main() method : ito ay kung saan ang lahat ng code na nakasulat para sa laro ay magsisimulang isagawa.
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 minimum na laki ay 3x3, ang maximum ay 100x100. Ang screen ng laro ay may pare-parehong laki. Maaari itong hatiin sa iba't ibang bilang ng mga cell. Halimbawa, lapad 7 at taas 9:import com.javarush.engine.cell.Game;
public class MySuperGame extends Game {
@Override
public void initialize() {
// задали размер поля 7x9 клеток
setScreenSize(7, 9);
...
}
}
Kapag nagsusulat ng isang laro, maaaring kailanganin mong makuha ang kasalukuyang lapad at taas ng playing field. Ang mga pamamaraan ng int getScreenWidth() at int getScreenHeight() ay kapaki-pakinabang para dito .
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. Ang paraan ng void showGrid(boolean isShow) ay nag-o-on at naka-off sa grid na naghihiwalay sa mga cell. Bilang default, ipinapakita ang grid. Upang i-off ito, tawagan ang paraang ito gamit ang false parameter:showGrid(false);
Resulta:
showGrid(true);
4. Primitive na programa
Halimbawa ng programa:public class MySuperGame extends Game {
@Override
public void initialize() {
// Создаем игровое поле 3x3 клетки
setScreenSize(3, 3);
// Выключаем отображение сетки
showGrid(false);
// Меняем фон центральной клетки на синий, и отображаем в ней “Х”
setCellValueEx(1, 1, Color.BLUE, "X", Color.ORANGE, 50);
}
}
Sa halimbawang ito, ang laki ng playing field ay nakatakda sa 3x3, ang grid display ay naka-off, at isang orange na kalahating cell na sized na "X" na simbolo ay nakatakda sa gitna sa isang asul na background. Ito ang unang makikita ng manlalaro kapag sinimulan 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? Ang bawat cell ng playing field ay maaaring itakda:- kulay ng cell (kulay ng background ng cell);
- teksto (teksto o numero);
- Kulay ng teksto;
- laki ng teksto bilang isang porsyento na nauugnay sa laki ng cell.
-
void setCellColor(int x, int y, Kulay ng kulay) — 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) - inilalagay ang text value sa cell na may mga coordinate (x, y):
setCellValue(3, 3, "text"); setCellValue(0, 8, "W"); setCellValue(4, 1, "2222"); setCellValue(6, 6, "");
-
String getCellValue(int x, int y) - ibinabalik ang text na 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 nilalaman sa cell na may mga coordinate (x, y). laki - taas ng teksto bilang isang porsyento ng taas ng cell:
setCellTextSize(2 , 0, 70); // 70% высоты клетки
-
int getCellTextSize(int x, int y) - ibinabalik ang laki ng nilalaman sa cell na may mga coordinate (x, y):
int size = getCellTextSize(2 , 0);
-
void setCellNumber(int x, int y, int value) - inilalagay ang halaga ng numero sa cell na may mga coordinate (x, y):
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, Kulay ng kulay) — nagtatakda ng kulay ng nilalaman (teksto) sa cell na may mga coordinate (x, y):
setCellTextColor(2, 1, Color.GREEN); setCellTextColor(0, 1, Color.NONE);
-
Kulay getCellTextColor(int x, int y) - ibinabalik ang kulay ng nilalaman (teksto) sa isang cell na may mga coordinate (x, y):
Color textColor = getCellTextColor(1, 3);
-
void setCellValueEx(int x, int y, Color cellColor, String value) — itinatakda ang cell na may mga coordinate (x, y) background color cellColor at content value:
setCellValueEx(0, 2, Color.BLUE, "56");
-
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor) — itinatakda ang cell na may mga coordinate (x, y) background color cellColor, content value at content color textColor:
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN);
-
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor, int textSize); — itinatakda ang cell na may mga coordinate (x, y) background color cellColor, content value, content color textColor at content size textSize:
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN, 70);
6. Paggawa gamit ang kulay
Ang mga kulay sa engine ng laro ay kinokontrol ng Color enum , na naglalaman ng mga natatanging halaga para sa 148 na kulay. At din ang espesyal na halaga WALA - kawalan ng kulay. Halimbawa ng pagtatrabaho sa kulay:Color myColor = Color.WHITE; // переменной myColor присваивается белый цвет.
Color redColor = Color.RED; // переменной redColor присваивается красный цвет.
Color blueColor = Color.BLUE; // переменной blueColor присваивается синий цвет.
Minsan maaaring gusto mong makakuha ng hanay ng lahat ng umiiral na mga kulay. Upang gawin ito, gamitin ang values() method . Halimbawa:
// переменной colors присваивается массив, содержащий все доступные цвета.
Color[] colors = Color.values();
Ang pagkuha ng numero ng kulay sa palette ay napakasimple:
Color color = Color.RED;
int redIndex = color.ordinal(); // Номер красного цвета
int blueIndex = Color.BLUE.ordinal(); // Номер синего цвета
Maaari ka ring makakuha ng isang kulay sa pamamagitan ng numero nito:
// переменной color присваивается цвет с индексом 10 из enum Color.
Color color = Color.values()[10];
7. Mga dialog box
Sa pagtatapos ng laro, dapat ipaalam sa manlalaro ang tagumpay o pagkatalo. Mayroong isang espesyal na paraan para dito na nagpapakita ng isang dialog box sa screen ng laro:void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)
dito:
- cellColor — kulay ng background ng dialog box;
- mensahe — text ng mensahe;
- textColor — kulay ng text ng mensahe;
- textSize — laki ng text ng mensahe.
8. Mga pamamaraan ng utility
Ang mga random na numero ay kadalasang ginagamit kapag nagsusulat ng mga laro. Upang gawing mas madali ang pagkuha ng mga random na numero, maaari mong gamitin ang mga pamamaraan ng scrap engine:- 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) inclusive.
GO TO FULL VERSION