1. Nggarap mouse
Mesin game duwe rong cara kanggo nggarap mouse:void onMouseLeftClick(int x, int y);
void onMouseRightClick(int x, int y);
Game
, lan nulis kode apa wae. Lan mesin game dhewe bakal nelpon nalika pangguna mencet tombol mouse.
onMouseLeftClick(int x, int y)
- disebut dening engine nalika sampeyan klik tombol mouse kiwa. Minangka bantahan, iku nampa koordinat sel saka lapangan playing ngendi klik dumadi. Sèl kiwa ndhuwur duwé koordinat (0,0). Kanggo nggunakake cara iki, iku kudu overridden.onMouseRightClick(int x, int y)
- disebut nalika sampeyan klik-tengen. Kerjane padha karo metode kasebutonMouseLeftClick(int x, int y)
.
import com.javarush.engine.cell.Color;
import com.javarush.engine.cell.Game;
import com.javarush.engine.cell.Key;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Устанавливаем размер игрового поля 3x3
setScreenSize(3, 3);
// Закрашиваем игровое поле белым цветом
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) {
// Ставим символ "X" в клетку по которой кликнули левой кнопкой мыши
setCellValue(x, y, "X");
}
@Override
public void onMouseRightClick(int x, int y) {
// Очищаем клетку по которой кликнули правой кнопкой мыши
setCellValue(x, y, "");
}
}
2. Nggarap keyboard
Mesin game duwe rong cara kanggo nggarap keyboard:void onKeyPress(Key key);
void onKeyReleased(Key key);
onKeyPress (Key key)
— disebut nalika sembarang tombol keyboard dipencet. Nilai tombol sing dipencet (utawa Key.UNKNOWN) diterusake menyang metode minangka argumen kunci.onKeyReleased (Key key)
- disebut nalika sembarang tombol keyboard dirilis. Argumentasi tombol njupuk nilai kunci sing cocog (utawa Key.UNKNOWN).
import com.javarush.engine.cell.Color;
import com.javarush.engine.cell.Game;
import com.javarush.engine.cell.Key;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Устанавливаем размер игрового поля 3x3
setScreenSize(3, 3);
// Закрашиваем игровое поле белым цветом
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) {
// При нажатии пробела, центральная клетка становится желтой
if (key == Key.SPACE) {
setCellColor(1, 1, Color.YELLOW);
}
}
@Override
public void onKeyReleased(Key key) {
// При отпускании пробела, центральной клетке возвращается белый цвет
if (key == Key.SPACE) {
setCellColor(1, 1, Color.WHITE);
}
}
}
Penting! Ing versi mesin saiki, jinis Key mung bisa nampa set winates saka nilai (9 pcs):
Artine | Apa sing diklik pangguna |
---|---|
Key.ENTER | Pangguna menet tombol Enter |
Kunci.MULUNG | Pangguna menet tombol Esc |
Kunci.JAGA | Pangguna ngeklik tombol Ngaso |
Kunci. SPACE | Pangguna menet Space |
Kunci.KIRI | Pangguna menet Panah Kiri |
Kunci. TEngen | Pangguna menet Panah Kanan |
Kunci.UP | Pangguna menet panah munggah |
Kunci. MUNDUR | Pangguna menet panah mudhun |
Kunci.Ora ngerti | Tombol apa wae kajaba sing kasebut ing ndhuwur |
3. Nggarap timer
Akeh game sing ditindakake ing wektu nyata, tegese sanajan pangguna ora nindakake apa-apa, acara ing game kasebut isih ditindakake. Supaya sampeyan bisa ngleksanakake game kasebut, kita wis nambahake fungsi timer ing mesin game. Kerjane kaya mangkene: sampeyan nguripake timer lan nyetel periode wektu sawise iku kudu mati. Contone, 500 milidetik. Sawise iku, saben setengah detik Game Engine nelpononTurnTimer()
. Kaping pirang-pirang tanpa wates nganti timer dipateni. Kepiye cara nggunakake timer?
-
Nguripake timer.
Ana cara khusus kanggo iki
void setTurnTimer(int timeMs)
. Minangka argumentasi, metode kasebut njupuk durasi interval antarane panggilan ing milidetik (1/1000 detik). Cukup kanggo nelpon sapisan, lan mesin game bakal miwiti nelpon caraonTurn()
saben milliseconds Ms. -
Ganti metode onTurn(int).
Kanggo nindakake iki, sampeyan kudu ngumumake metode
void onTurn(int step)
ing kelas sing diwarisake saka kelas kasebutGame
. Cara iki bakal diarani mesin game. Ing kasus iki, mesin bakal saben wektu nransfer nomer serial telpon kuwi (1,2,3, ...) kanggo cara. -
Pateni timer.
Yen wektu ora perlu maneh, nalika, contone, pangguna wis rampung game, iku bisa dipateni. Kanggo nindakake iki, sampeyan mung kudu nelpon
stopTurnTimer()
. -
Nyepetake utawa ngganti wektu.
Ing sawetara game, acara terus-terusan nyepetake, mula luwih gampang nyepetake wektu (nyuda wektu ing antarane telpon). Ora ana sing luwih gampang: nelpon
setTurnTimer(int timeMs)
maneh, kanthi nilai anyar, lan wektu antarane telpononTurn()
bakal diganti.
import com.javarush.engine.cell.Color;
import com.javarush.engine.cell.Game;
public class MySuperGame extends Game {
…
@Override
public void initialize() {
// Создаем игровое поле 3x3 клетки
setScreenSize(3, 3);
showGrid(false);
setCellValueEx(1, 1, Color.BLUE, "X", Color.ORANGE, 50);
setTurnTimer(500); //Включаем таймер, интервал между вызовами – 500мс.
}
@Override
public void onTurn(int step) {
if(step == 100) {
stopTurnTimer(); // если прошло 100 тактов, выключаем таймер
}
if (step % 2 == 1) {
// Если данный такт нечётный, установить клетке красный фон
setCellColor(1, 1, Color.RED);
} else {
//если данный такт чётный, установить клетке синий фон
setCellColor(1, 1, Color.BLUE);
}
}
…
}
Ing conto prasaja iki, kita nggawe lapangan sel 3x3. Banjur kita nguripake timer sing bakal nelpon cara saben setengah detik onTurn()
. Saben setengah detik warna sel bakal ganti, nanging isine ora bakal owah. Sawise 50 detik, warna bakal mandheg ganti. Iku kabeh! Yen sampeyan pengin sinau luwih lengkap babagan bagean Game, iki sawetara dokumentasi migunani sing bisa mbantu:
GO TO FULL VERSION