Saya bermain-main dengan klon pembom untuk mempelajari pengembangan game.
Sejauh ini saya sudah melakukan ubin, gerakan, deteksi tabrakan, dan pengambilan barang. Saya juga memiliki pseudo bombplacing (hanya grafik dan tabrakan, tidak ada fungsi nyata).
Saya telah membuat jsFiddle permainan dengan fungsi yang saya miliki saat ini. Kode dalam biola sangat jelek sekalipun. Gulir melewati peta dan Anda menemukan cara saya menempatkan bom.
Bagaimanapun, apa yang ingin saya lakukan adalah sebuah objek, yang memiliki informasi umum tentang bom seperti:
function Bomb(){
this.radius = player.bombRadius;
this.placeBomb = function (){
if(player.bombs != 0){
// place bomb
}
}
this.explosion = function (){
// Explosion
}
}
Saya tidak benar-benar tahu bagaimana memasukkannya ke dalam kode. Setiap kali saya meletakkan bom, apakah saya lakukan var bomb = new Bomb();
atau harus terus-menerus memilikinya dalam skrip untuk dapat mengaksesnya.
Bagaimana bom itu merusak? Apakah sesederhana melakukan X, Y di semua arah hingga radius habis atau objek menghentikannya? Bisakah saya menggunakan sesuatu seperti setTimeout (bomb.explosion, 3000) sebagai timer?
Bantuan apa pun dihargai, baik itu penjelasan sederhana tentang teori atau contoh kode berdasarkan biola. Ketika saya mencoba cara objek itu memecahkan kode.
Pembaruan: Saya sekarang meletakkan bom, dan setelah beberapa waktu menghapusnya tergantung pada posisi saya meletakkannya. Tetapi jika saya menempatkan bom sebelum bom pertama meledak, itu hanya akan menghapus salah satu dari mereka (jelas karena bombX dan bombY telah berubah sejak bom pertama ditempatkan).
Sekarang saya perlu tahu cara memperbaiki masalah ini, mungkin membuat array baru dengan semua posisi bom? Apa cara terbaik untuk melakukan ini?
Kode saat ini:
function placeBomb(){
if(placebomb && player.bombs != 0){
map[player.Y][player.X].object = 2;
bombX = player.X; bombY = player.Y;
placebomb = false;
player.bombs--;
setTimeout(explode, 3000);
}
}
function explode(){
alert('BOOM!');
delete map[bombY][bombX].object;
player.bombs++;
}