Bonjour à toute la communauté,
J'ai défini par un constructeur un objet Aliment() qui représente, à chaque fois qu'il est appelé, un aliment différent.
Tous mes Aliment() sont référencés dans un tableau qui s'appelle TableauAliments.
Le but de mon jeu, c'est de faire rattraper ces aliments, qui tombent (leur position y est incrémentée), par un personnage contrôlable.
Voici donc mon code, dans une fonction Chronometre() qui est appelé très régulièrement :
Dans le même temps, voici respectivement ce qui me sert à faire chuter l'aliment, gérer la collision avec le personnage ou supprimer l'aliment non rattrapé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 function Chronometre() { for (var i = 0, l = TableauAliments.length; i < l; i++) { if (TableauAliments[i].peutEtreEnleve) { TableauAliments.splice(i, 1); } TableauAliments[i].modifierPosition(); TableauAliments[i].gererCollisions(); TableauAliments[i].alimentNonRattrape(); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Aliment.prototype.modifierPosition = function() { this.image.y += difficulteJeu; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Aliment.prototype.alimentNonRattrape = function() { if (this.image.y == 504) { niveauJeu.removeChild(this.image); niveauJeu.update(); this.peutEtreEnleve = true; } }J'aimerais qu'un aliment, s'il n'est pas rattrapé ou s'il entre en collision avec le personnage, soit supprimé du tableau. J'ai donc un this.peutEtreEnleve = true; qui doit permettre à l'élément d'être supprimé grâce à if (TableauAliments[i].peutEtreEnleve) { TableauAliments.splice(i, 1); } mais cela ne fonctionne pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Aliment.prototype.gererCollisions = function() { if (! (positionXPersonnage > this.image.x + dimensionsWidth || positionYPersonnage < this.image.x - 42 || positionXPersonnage > this.image.y + dimensionsHeight || positionYPersonnage < this.image.x - 54)) { nombreAlimentsRecuperes += 1; niveauJeu.removeChild(this.image); niveauJeu.update(); this.peutEtreEnleve = true; } }
Quelqu'un peut-il m'expliquer pourquoi la console me dit que TableauAliments[i].peutEtreEnleve n'est pas défini ?
En vous remerciant.
Partager