私はボンバーマンのクローンをいじって、ゲーム開発を学びます。
これまでのところ、タイル、移動、衝突の検出、アイテムのピックアップを行いました。また、疑似爆撃を行っています(グラフィックスと衝突のみで、実際の機能はありません)。
私は現在持っている機能でゲームのjsFiddleを作りました。フィドルのコードは非常に醜いです。地図をスクロールすると、爆弾を配置する方法がわかります。
とにかく、私がやりたいのは、爆弾に関する一般的な情報が含まれているオブジェクトです。
function Bomb(){
this.radius = player.bombRadius;
this.placeBomb = function (){
if(player.bombs != 0){
// place bomb
}
}
this.explosion = function (){
// Explosion
}
}
それをコードに組み込む方法は本当にわかりません。爆弾を置くたびにvar bomb = new Bomb();
できるようにするために、スクリプトに常に必要がありますか。
爆弾はどのようにダメージを与えますか?半径がなくなるか、オブジェクトがそれを止めるまで、すべての方向にX、Yを行うのと同じくらい簡単ですか?タイマーとしてsetTimeout(bomb.explosion、3000)などを使用できますか?
理論の簡単な説明やフィドルに基づくコード例であっても、どんな助けでもありがたいです。私がオブジェクトの方法を試したとき、それはコードを壊します。
更新:爆弾を配置し、配置した位置に応じて、一定時間後に削除します。しかし、最初の爆弾が爆発する前に爆弾を配置した場合、爆弾は1つしか削除されません(明らかに、最初の爆弾が配置されてからbombXとbombYが変更されているためです)。
今、私はこの問題を修正する方法を知る必要があります、多分爆弾の位置すべてで新しいアレイを作成しますか?これを行う最良の方法は何ですか?
現在のコード:
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++;
}