1. Bekerja dengan mouse
Mesin game memiliki dua metode untuk bekerja dengan mouse:-
void onMouseLeftClick(int x, int y);
-
void onMouseRightClick(int x, int y);
Game
, dan menambahkan kode apa pun yang Anda inginkan. Mesin game akan memanggil mereka saat pengguna mengklik tombol mouse.
-
onMouseLeftClick(int x, int y)
— dipanggil oleh mesin saat tombol kiri mouse diklik. Parameternya adalah koordinat sel lapangan permainan tempat klik terjadi. Sel kiri atas memiliki koordinat (0, 0). Anda perlu mengganti metode ini untuk menggunakannya. -
onMouseRightClick(int x, int y)
— dipanggil saat tombol kanan mouse diklik. Metode ini bekerja sepertionMouseLeftClick(int x, int y)
metode.
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. Bekerja dengan keyboard
Mesin game memiliki dua metode untuk bekerja dengan keyboard:-
void onKeyPress(Key key);
-
void onKeyReleased(Key key);
-
onKeyPress(Key key)
— dipanggil saat tombol apa saja ditekan. Parameter key adalah tombol yang ditekan (atau Key.UNKNOWN). -
onKeyReleased(Key key)
— dipanggil saat sembarang tombol dilepaskan. Parameter kunci adalah kunci yang sesuai (atau Kunci.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);
}
}
}
Penting! Dalam versi mesin gim saat ini, jenis Kunci memiliki sembilan nilai terbatas:Nilai | Tombol ditekan oleh pengguna |
---|---|
Kunci.MASUKKAN | Pengguna menekan Enter |
Kunci.ESCAPE | Pengguna menekan Esc |
Kunci.JEDA | Pengguna menekan Jeda |
Kunci.SPACE | Pengguna menekan Spasi |
Kunci. KIRI | Pengguna menekan tombol panah kiri |
Kunci.KANAN | Pengguna menekan tombol panah kanan |
Kunci.UP | Pengguna menekan tombol panah atas |
Kunci.BAWAH | Pengguna menekan tombol bawah |
Kunci.UNKNOWN | Pengguna menekan tombol selain yang di atas |
3. Bekerja dengan pengatur waktu
Banyak game terjadi dalam waktu nyata, bahkan jika pengguna tidak melakukan apa pun, peristiwa tetap terjadi dalam game. Untuk memungkinkan Anda mengimplementasikan game semacam itu, kami menambahkan pengatur waktu ke mesin game. Cara kerjanya seperti ini: Anda menyalakan pengatur waktu dan mengatur interval pengatur waktu. Misalnya, 500 milidetik. Kemudian, setiap setengah detik mesin game memanggilonTurnTimer()
metode tersebut. Lagi dan lagi selamanya — sampai timer dimatikan. Jadi bagaimana Anda menggunakan pengatur waktu?
-
Nyalakan pengatur waktu.
Untuk melakukan ini, ada
void setTurnTimer(int timeMs)
metode khusus. Metode mengambil sebagai argumen interval antara panggilan dalam milidetik (1 milidetik = 1/1000 detik). Anda hanya perlu memanggilnya sekali, dan mesin game akan mulai memanggilonTurn()
metode tersebut setiap milidetik Ms. -
Ganti metode onTurn(int).
Untuk melakukan ini, Anda perlu mendeklarasikan
void onTurn(int step)
metode di kelas yang mewarisiGame
. Metode ini akan dipanggil oleh mesin game. Selain itu, dengan setiap panggilan, mesin game akan meneruskan ke metode pengidentifikasi berurutan untuk panggilan tersebut (1, 2, 3, …). -
Matikan pengatur waktu.
Jika pengatur waktu tidak lagi diperlukan, misalnya saat pengguna menyelesaikan permainan, Anda dapat mematikannya. Untuk melakukan ini, Anda hanya perlu memanggil
stopTurnTimer()
metode. -
Mempercepat atau mengubah timer.
Di beberapa game, kecepatan terjadinya peristiwa terus meningkat, jadi akan lebih mudah untuk mempercepat pengatur waktu kami (mengurangi waktu antar panggilan). Tidak ada yang lebih mudah: panggil
setTurnTimer(int timeMs)
sekali lagi dengan nilai baru, dan waktu antaronTurn()
panggilan akan berubah.
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);
}
}
…
}
Dalam contoh sederhana ini, kami membuat bidang berukuran 3 sel x 3 sel. Kemudian kami memulai pengatur waktu yang akan memanggil onTurn()
metode setiap setengah detik. Setiap setengah detik, warna sel akan berubah, tetapi isinya tidak akan berubah. Setelah 50 detik, warnanya tidak akan berubah lagi. Itu saja untuk saat ini! Jika Anda ingin mempelajari lebih lanjut tentang bagian "Permainan", berikut beberapa dokumentasi bermanfaat yang dapat membantu:
GO TO FULL VERSION