1. Bekerja dengan mouse
Mesin permainan memiliki dua metode untuk bekerja dengan mouse:void onMouseLeftClick(int x, int y);
void onMouseRightClick(int x, int y);
Game
, dan menulis kode apa pun di dalamnya. Dan mesin game itu sendiri akan memanggil mereka ketika pengguna menekan tombol mouse.
onMouseLeftClick(int x, int y)
— dipanggil oleh mesin ketika Anda mengklik tombol kiri mouse. Sebagai argumen, ia menerima koordinat sel lapangan tempat klik terjadi. Sel kiri atas memiliki koordinat (0,0). Untuk menggunakan metode ini, itu harus ditimpa.onMouseRightClick(int x, int y)
— dipanggil saat Anda mengklik kanan. Cara kerjanya mirip dengan metode inionMouseLeftClick(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. Bekerja dengan keyboard
Mesin permainan memiliki dua metode untuk bekerja dengan keyboard:void onKeyPress(Key key);
void onKeyReleased(Key key);
onKeyPress (Key key)
— dipanggil ketika tombol keyboard apa pun ditekan. Nilai dari tombol yang ditekan (atau Key.UNKNOWN) diteruskan ke metode sebagai argumen kunci.onKeyReleased (Key key)
— dipanggil ketika tombol keyboard apa pun dilepaskan. Argumen key mengambil nilai dari kunci yang sesuai (atau 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! Pada versi mesin saat ini, tipe Kunci hanya dapat menerima serangkaian nilai terbatas (9 buah):
Arti | Apa yang diklik pengguna |
---|---|
Kunci.ENTER | Pengguna menekan tombol Enter |
Kunci.ESCAPE | Pengguna menekan tombol Esc |
Kunci.JEDA | Pengguna mengklik tombol Jeda |
Kunci.SPASI | Pengguna menekan Spasi |
Kunci.KIRI | Pengguna menekan Panah Kiri |
Kunci.KANAN | Pengguna menekan Panah Kanan |
Kunci.UP | Pengguna menekan Panah Atas |
Kunci. BAWAH | Pengguna menekan Panah Bawah |
Kunci.TIDAK DIKETAHUI | Kunci apa pun kecuali yang tercantum di atas |
3. Bekerja dengan pengatur waktu
Banyak game berlangsung secara real-time, artinya meskipun pengguna tidak melakukan apa pun, peristiwa dalam game tetap dijalankan. Agar Anda dapat mengimplementasikan permainan seperti itu, kami telah menambahkan fungsi pengatur waktu ke mesin permainan. Cara kerjanya seperti ini: Anda menyalakan pengatur waktu dan mengatur jangka waktu setelahnya akan berbunyi. Misalnya, 500 milidetik. Setelah itu, setiap setengah detik Game Engine memanggil fileonTurnTimer()
. Berkali-kali tak terhingga hingga pengatur waktu dimatikan. Bagaimana cara menggunakan pengatur waktu?
-
Nyalakan pengatur waktunya.
Ada metode khusus untuk ini
void setTurnTimer(int timeMs)
. Sebagai argumen, metode ini mengambil durasi interval antar panggilan dalam milidetik (1/1000 detik). Cukup dengan memanggilnya sekali, dan mesin game akan mulai memanggil metode tersebutonTurn()
setiap kali Ms milidetik. -
Ganti metode onTurn(int).
Untuk melakukan ini, Anda perlu mendeklarasikan metode
void onTurn(int step)
di kelas yang diwarisi dari kelas tersebutGame
. Metode ini akan dipanggil oleh mesin game. Dalam hal ini, mesin setiap kali akan mentransfer nomor seri panggilan tersebut (1,2,3, ...) ke metode. -
Matikan pengatur waktunya.
Jika pengatur waktu tidak lagi diperlukan, misalnya ketika pengguna telah menyelesaikan permainan, maka pengatur waktu dapat dimatikan. Untuk melakukan ini, Anda hanya perlu menelepon
stopTurnTimer()
. -
Mempercepat atau mengubah pengatur waktu.
Di beberapa game, acara terus dipercepat, jadi akan lebih mudah jika kita mempercepat timer kita (mengurangi waktu antar panggilan). Tidak ada yang lebih sederhana: telepon
setTurnTimer(int timeMs)
lagi, dengan nilai baru, dan waktu antar panggilanonTurn()
akan berubah.
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);
}
}
…
}
Dalam contoh sederhana ini kami membuat bidang sel 3x3. Kemudian kami menyalakan pengatur waktu yang akan memanggil metode tersebut setiap setengah detik onTurn()
. Setiap setengah detik warna sel akan berubah, namun isinya tidak berubah. Setelah 50 detik warnanya akan berhenti berubah. Itu saja! Jika Anda ingin mempelajari lebih lanjut tentang bagian Permainan, berikut beberapa dokumentasi berguna yang dapat membantu:
GO TO FULL VERSION