Sto giocando con un clone di un bomberman per imparare lo sviluppo del gioco.
Finora ho fatto piastrelle, movimento, rilevamento delle collisioni e raccolta degli oggetti. Ho anche uno pseudo bombplacing (solo grafica e collisione, nessuna vera funzionalità).
Ho creato un jsFiddle del gioco con le funzionalità che ho attualmente. Il codice nel violino è molto brutto però. Scorri la mappa e scopri come posiziono le bombe.
Comunque, quello che vorrei fare è un oggetto, che ha le informazioni generali sulle bombe come:
function Bomb(){
this.radius = player.bombRadius;
this.placeBomb = function (){
if(player.bombs != 0){
// place bomb
}
}
this.explosion = function (){
// Explosion
}
}
Non so davvero come adattarlo al codice però. Ogni volta che posiziono una bomba, devo fare var bomb = new Bomb();
o devo averla costantemente nella sceneggiatura per potervi accedere.
Come fa la bomba a danneggiare? È semplice come fare X, Y in tutte le direzioni fino a quando il raggio si esaurisce o l'oggetto lo ferma? Posso usare qualcosa come setTimeout (bomb.explosion, 3000) come timer?
Qualsiasi aiuto è apprezzato, che si tratti di una semplice spiegazione della teoria o di esempi di codice basati sul violino. Quando ho provato l'oggetto in modo da rompere il codice.
Aggiornamento: ora posiziono le bombe e dopo un certo periodo le elimino a seconda della posizione in cui le ho piazzate. Ma se posiziono una bomba prima che esploda la prima bomba ne cancella solo una (ovviamente da quando bombX e bombY sono cambiate da quando è stata piazzata la prima).
Ora ho bisogno di sapere come risolvere questo problema, forse creare un nuovo array con tutte le posizioni della bomba? Qual è il modo migliore per farlo?
Codice attuale:
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++;
}