Javascript Game #12:
Proyek Game #3: Si Kura-Kura Lapar (Canvas)
Hai para jagoan coding! Sekarang kita akan bikin game yang lebih keren: Si Kura-Kura Lapar. Kita pakai <canvas> untuk menggambar kura-kura dan makanan yang jatuh. Kamu bisa gerakin kura-kura pakai tombol panah kiri/kanan untuk menangkap makanan. Setiap makanan tertangkap, skor naik. Awas, makanan terus berjatuhan!
PENJELASAN GAME
Wah, keren ya! Kura-kura bisa gerak dan menangkap makanan. Yuk kita bedah kodenya.
1. Canvas dan Context
const ctx = canvas.getContext('2d');
Canvas adalah papan gambar ajaib. ctx adalah alat gambar (seperti kuas) yang bisa menggambar persegi, lingkaran, teks, dll.
2. Variabel Penting
let foods = []; // array makanan
let leftPressed, rightPressed; // status tombol
Kita simpan posisi kura-kura, daftar makanan (masing-masing punya x, y, ukuran), dan tombol yang sedang ditekan.
3. Gerak Kura-Kura (Keyboard)
if (e.key === 'ArrowLeft') leftPressed = true;
});
function updateTurtle() {
if (leftPressed) turtleX -= speed;
}
Kita pakai event listener untuk mencatat tombol yang ditekan. Di setiap frame (game loop), kita update posisi kura-kura berdasarkan tombol yang aktif.
4. Makanan Jatuh dan Tabrakan
food.y += FOOD_SPEED;
if (deteksi tabrakan) {
skor++; hapus makanan;
}
}
Setiap frame, makanan turun. Kita cek apakah posisi makanan bertumpuk dengan kura-kura (pakai kondisi kotak bertabrakan). Jika iya, hapus makanan dan tambah skor.
5. Game Loop
updateTurtle();
updateFoods();
draw();
requestAnimationFrame(gameLoop);
}
requestAnimationFrame memanggil fungsi lagi setiap kali layar siap digambar (biasanya 60 kali per detik). Di sinilah semua logika game berjalan.
MISI TAMBAHAN (COBA SENDIRI!)
Setelah game ini jalan, coba kembangkan dengan ide-ide berikut:
- Tambah nyawa: kalau makanan jatuh ke bawah, nyawa berkurang. Game over kalau nyawa habis.
- Buat makanan berbeda: makanan emas (skor +2), makanan busuk (skor -1).
- Tambahkan level: semakin tinggi skor, makanan semakin cepat jatuh.
- Gambar kura-kura lebih lucu pakai gambar asli (image).
- Efek suara setiap kali menangkap makanan.
📸 Kembangkan dan tunjukkan ke teman-temanmu!
📝 RANGKUMAN SERU
- Kita belajar menggunakan
<canvas>untuk membuat game. - Animasi dengan
requestAnimationFrame. - Deteksi tabrakan antara dua kotak (kura-kura dan makanan).
- Event keyboard untuk gerakan.
- Sekarang kamu bisa membuat game yang lebih kompleks!