1. Paggawa gamit ang mouse
Ang engine ng laro ay may dalawang pamamaraan para sa pagtatrabaho gamit ang mouse:-
void onMouseLeftClick(int x, int y);
-
void onMouseRightClick(int x, int y);
Game
, at magdagdag ng anumang code na gusto mo sa kanila. Tatawagan sila ng game engine kapag na-click ng user ang mga pindutan ng mouse.
-
onMouseLeftClick(int x, int y)
— tinawag ng makina kapag na-click ang kaliwang pindutan ng mouse. Ang mga parameter nito ay ang mga coordinate ng cell ng playing field kung saan naganap ang pag-click. Ang itaas na kaliwang cell ay may mga coordinate (0, 0). Kailangan mong i-override ang paraang ito para magamit ito. -
onMouseRightClick(int x, int y)
— tinatawag kapag na-click ang kanang pindutan ng mouse. Ang pamamaraang ito ay gumagana tulad ngonMouseLeftClick(int x, int y)
pamamaraan.
import com.codegym.engine.cell.Color;
import com.codegym.engine.cell.Game;
import com.codegym.engine.cell.Key;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Set the size of the playing field to 3x3
setScreenSize(3, 3);
// Paint the playing field white
for (int x = 0; x < 3; x++) {
for (int y = 0; y < 3; y++) {
setCellColor(x, y, Color.WHITE);
}
}
}
@Override
public void onMouseLeftClick(int x, int y) {
// Set "X" in the cell where the left mouse click occurred
setCellValue(x, y, "X");
}
@Override
public void onMouseRightClick(int x, int y) {
// Clear the cell where the right mouse click occurred
setCellValue(x, y, "");
}
}
2. Paggawa gamit ang keyboard
Ang engine ng laro ay may dalawang paraan para sa pagtatrabaho sa keyboard:-
void onKeyPress(Key key);
-
void onKeyReleased(Key key);
-
onKeyPress(Key key)
— tinatawag kapag pinindot ang anumang key. Ang key parameter ay ang pinindot na key (o Key.UNKNOWN). -
onKeyReleased(Key key)
— tinatawag kapag ang anumang susi ay inilabas. Ang key parameter ay ang kaukulang key (o Key.UNKNOWN).
import com.codegym.engine.cell.Color;
import com.codegym.engine.cell.Game;
import com.codegym.engine.cell.Key;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Set the size of the playing field to 3x3
setScreenSize(3, 3);
// Paint the playing field white
for (int x = 0; x < 3; x++) {
for (int y = 0; y < 3; y++) {
setCellColor(x, y, Color.WHITE);
}
}
}
@Override
public void onKeyPress(Key key) {
// When the space bar is pressed, the center cell turns yellow
if (key == Key.SPACE) {
setCellColor(1, 1, Color.YELLOW);
}
}
@Override
public void onKeyReleased(Key key) {
// When the space bar is released, the center cell changes back to white
if (key == Key.SPACE) {
setCellColor(1, 1, Color.WHITE);
}
}
}
Mahalaga! Sa kasalukuyang bersyon ng engine ng laro, ang uri ng Key ay may limitadong hanay ng siyam na halaga:Halaga | Pindot ng user ang key |
---|---|
Susi.ENTER | Pinindot ng user ang Enter |
Susi.TAKAS | Pinindot ng user ang Esc |
Key.PAUSE | Pinindot ng user ang Pause |
Key.SPACE | Pinindot ng user ang Space |
Susi.LEFT | Pinindot ng user ang kaliwang arrow key |
Susi. TAMA | Pinindot ng user ang kanang arrow key |
Susi pataas | Pinindot ng user ang pataas na arrow key |
Susi.PABABA | Pinindot ng user ang down key |
Susi.HINDI ALAM | Pinindot ng user ang isang key maliban sa nasa itaas |
3. Paggawa gamit ang timer
Maraming mga laro ang nangyayari sa real time, ibig sabihin, kahit na walang ginagawa ang user, nangyayari pa rin ang mga kaganapan sa laro. Upang bigyang-daan kang ipatupad ang mga naturang laro, nagdagdag kami ng timer sa engine ng laro. Gumagana ito tulad nito: i-on mo ang timer at itakda ang agwat ng timer. Halimbawa, 500 milliseconds. Pagkatapos, bawat kalahating segundo ay tinatawag ng game engine angonTurnTimer()
pamamaraan. Paulit-ulit magpakailanman — hanggang sa i-off ang timer. Kaya paano mo ginagamit ang timer?
-
I-on ang timer.
Upang gawin ito, mayroong isang espesyal na pamamaraan. Kinukuha ng pamamaraan bilang argumento ang agwat sa pagitan ng mga tawag sa millisecond (1 millisecond = 1/1000 segundo). Kailangan mo lang itong tawagan nang isang beses, at sisimulan ng game engine na tawagan ang pamamaraan tuwingMs millisecond.
void setTurnTimer(int timeMs)
onTurn()
-
I-override ang onTurn(int) method.
Upang gawin ito, kailangan mong magdeklara ng isang pamamaraan sa klase na nagmamana ng . Ang pamamaraang ito ay tatawagin ng game engine. Higit pa rito, sa bawat tawag, ipapasa ng game engine sa pamamaraan ang isang sequential identifier para sa tawag (1, 2, 3, …).
void onTurn(int step)
Game
-
I-off ang timer.
Kung hindi na kailangan ang timer, halimbawa, kapag nakumpleto ng user ang laro, maaari mo itong i-off. Upang gawin ito, kailangan mo lamang tawagan ang pamamaraan.
stopTurnTimer()
-
Pabilisin o baguhin ang timer.
Sa ilang laro, patuloy na bumibilis ang rate kung saan naganap ang mga kaganapan, kaya magiging maginhawang pabilisin ang aming timer (bawasan ang oras sa pagitan ng mga tawag). Walang mas madali: tumawag
setTurnTimer(int timeMs)
muli gamit ang isang bagong halaga, atonTurn()
magbabago ang oras sa pagitan ng mga tawag.
import com.codegym.engine.cell.Color;
import com.codegym.engine.cell.Game;
public class MySuperGame extends Game {
…
@Override
public void initialize() {
// Create a playing field that is 3 cells x 3 cells
setScreenSize(3, 3);
showGrid(false);
setCellValueEx(1, 1, Color.BLUE, "X", Color.ORANGE, 50);
setTurnTimer(500); // Turn on the timer, the interval between calls is 500ms.
}
@Override
public void onTurn(int step) {
if(step == 100) {
stopTurnTimer(); // If 100 calls have been made, turn off the timer
}
if (step % 2 == 1) {
// If this call is odd, set the cell background to red
setCellColor(1, 1, Color.RED);
}
else {
// If this call is even, set the cell background to blue
setCellColor(1, 1, Color.BLUE);
}
}
…
}
Sa simpleng halimbawang ito, gumawa kami ng field na 3 cell x 3 cell. Pagkatapos ay sinimulan namin ang isang timer na tatawag sa onTurn()
pamamaraan tuwing kalahating segundo. Bawat kalahating segundo, magbabago ang kulay ng cell, ngunit hindi magbabago ang nilalaman nito. Pagkatapos ng 50 segundo, hindi na magbabago ang kulay. Yun lang muna! Kung gusto mong matuto nang higit pa tungkol sa seksyong "Mga Laro," narito ang ilang kapaki-pakinabang na dokumentasyon na makakatulong:
GO TO FULL VERSION