J'essaie de faire un jeu de serpent en javascript, mais je suis en difficulté avec la détection de collision. J'ai essayé plusieurs méthodes jusqu'à présent, mais dans le désespoir, je me suis arrangé pour stocker toutes les positions des segments de chaque image puis vérifier s'il y avait des doublons avant d'animer le prochain. Cette méthode n'a pas été couronnée de succès, soit malheureusement.
Peut-être cela est-il dû à un malentendu de la façon dont JS traite les tableaux. Pendant un certain temps, j'utilisais if(x in y)
mais à partir de ce que je peux dire qui revient si le même objet est dans un tableau.
Voici la démo en direct: http://jsfiddle.net/AScYw/2/
Voici le code plus facilement lu: http://pastebin.com/ygj73me6
Le code en question se trouve dans l'objet serpent, car la fonction se collide
.
this.collide = function(){ for(var z=0; z<this.positions.length-1; z++){ for(var q=z+1; q<this.positions.length-1; q++){ return this.positions[z][0] == this.positions[q][0] && this.positions[z][1] == this.positions[q][1]; } }
Votre fonction ici nécessite un peu de travail et cela peut résoudre votre problème.
this.collide = function(){ for(var z=0; z<this.positions.length-1; z++){ for(var q=z+1; q<this.positions.length-1; q++){ return this.positions[z][0] == this.positions[q][0] && this.positions[z][1] == this.positions[q][1]; } } }
2 choses sont fausses.
Ça a l'air cool. Voir ensuite Mario;)