Bonjour! Bonsoir!

Tout d'abord, désolé si le sujet a déjà été posé mais j'ai fait la fonction recherche du forum je suis tombé entre 300 et 500 posts je ne l'ai est pas tous vérifié ^^' .

J'ai bien-sur déjà effectué des recherche sur Google.
Voici m'a question;

J'ai plusieurs tableaux :

Monstre (N'a que des 1 pour compter le nombre d'entités qu'il y a),

Monstre_x (Contient la coordonnée X des monstres),

Monstre_y (Contient la coordonnée Y des monstres),

//////////////////////////////////////////////////////////////////////////////////////

Voilà ce que je tente de faire :

J'aimerais vérifier la possibilité de déplacement de chaque entité pour pouvoir la rendre "intelligente".

C'est-à-dire que pour l'instant je vérifie pour chaque Monstre s'il peut aller en Haut, en Bas, à Gauche, à Droite.

Et je stock la valeur true ou false dans des tableaux appelés respectivement : Haut, Bas, Gauche, Droite.

A ce stade la j'aimerais pouvoir comparer les valeurs, donc :

Haut avec Bas et Gauche avec Droite,

Si Haut et Bas sont True alors regarder la valeur qui mènera mon monstre le plus près de mon Héros.

Et inversement si dans Haut et Bas l'un d'eux est False alors dire au script d'aller dans la direction True.

//////////////////////////////////////////////////////////////////////////////////////

Il y a-t-il un moyen de faire cela assez "simplement" ou suis-je obligé de passer par des millions de if() pour vérifier chaque possibilité ?

Merci de m'avoir lu.
Bonne journée/soirée/nuitée.

2 réponses


betaWeb
Réponse acceptée

Salut,

Alors déjà pourquoi utiliser X tableaux alors que passer par un objet serait autrement plus simple ?

var monstres = {
   "monstre_1" : {
        x: 16 /* coord x */,
        y: 48 /* coord y */,
        moves: {
            up: false,
            down: false,
            left: false,
            right: false
        }
    },
   "monstre_2": { /* ... */ },
   "monstre_3": { /* ... */ },
   /* ...*/ 
};

_.each(monstres, function(monstre, key){
  var moves = monstre.moves;
  if (true === moves.up && true === moves.down || true === moves.left && true === moves.right) {
    // ton traitement ici
  }
});

Une fois que tu as ton objet JS, tu peux le parcourir et le filtrer afin de faire tes opérations. Je te conseille d'utiliser la libraire http://underscorejs.org/ qui s'avère extrêmement utile dans ce genre de cas.

En espérant avoir répondu à ta question.

MrB0ulet
Auteur

Bonjour, merci de t'as réponse mais j'ai malheuresement pas le droit d'utiliser de library... Et mes monstres sont générés aléatoirement et je peux donc en avoir 80 sur ma map, je pense que écrire 80 fois la même chose est assez... fin on me comprend ^^'. Sur ce au revoir, je met le sujet en résolut, je trouve t'as façon de faire très interressante et la garderais précieusement pour d'autre utilisation :)