Я играю с клоном Bomberman, чтобы изучить развитие игры.
До сих пор я делал плитки, движение, обнаружение столкновений и сбор предметов. У меня также есть псевдо-бомбардировка (только графика и столкновения, никакой реальной функциональности).
Я сделал 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) в качестве таймера?
Любая помощь приветствуется, будь то простое объяснение теории или примеры кода на основе скрипки. Когда я пробовал объект таким образом, он нарушает код.
Обновление: теперь я размещаю бомбы, и через определенное время удаляю их в зависимости от позиции, в которой я их разместил. Но если я помещу бомбу до того, как первая бомба взорвется, она удалит только одну из них (очевидно, поскольку 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++;
}