IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Vérifier qu'un objet peut être enlevé d'un tableau


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Rien pour l'instant
    Inscrit en
    Octobre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Rien pour l'instant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 3
    Par défaut Vérifier qu'un objet peut être enlevé d'un tableau
    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 :

    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();
    	}
    }
    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
    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;	
    	}
    }
    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;
    	}
    }
    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.

    Quelqu'un peut-il m'expliquer pourquoi la console me dit que TableauAliments[i].peutEtreEnleve n'est pas défini ?
    En vous remerciant.

  2. #2
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    Tu as mis les endroits où il est défini à true, mais où est-il défini à false ? Nulle part, donc pas défini = undefined

    Attention également, supprimer un élément du tableau change les index de celui-ci ; mieux vaut ne pas faire d'opérations dans le même tour de boucle à cet index

  3. #3
    Membre à l'essai
    Homme Profil pro
    Rien pour l'instant
    Inscrit en
    Octobre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Rien pour l'instant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 3
    Par défaut
    Merci pour la réponse, mon jeu est parfaitement fonctionnel désormais.

    J'ai redéfini dans mon constructeur le fait que par défaut, l'objet ne peut pas être enlevé.
    J'ai utilisé une condition dans ma boucle for.

    Je marque le sujet comme [RÉSOLU ✓]. Merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requête HQL qui retourne un DTO contenant 2 objets dont l'un peut être NULL
    Par imyJava dans le forum Persistance des données
    Réponses: 0
    Dernier message: 20/05/2011, 14h20
  2. Réponses: 3
    Dernier message: 19/08/2010, 17h17
  3. Réponses: 3
    Dernier message: 04/01/2010, 19h32
  4. Réponses: 10
    Dernier message: 10/11/2006, 14h36
  5. Réponses: 10
    Dernier message: 04/07/2006, 20h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo