Quel est le problème avec ce tableau…?

Je suis en train de créer un jeu dans lequel un utilisateur se déplace autour d’une grid et doit collecter des passagers. J’ai presque tout fait, sauf que je dois vérifier si le joueur passe au-dessus d’un passager et, le cas échéant, afficher une boîte d’alerte. Voici mon JSFiddle: http://jsfiddle.net/nZ8vA/9/ et le précédent: http://jsfiddle.net/nZ8vA/7/ qui contient le tableau que j’avais auparavant. Comme vous pouvez le voir, j’ai un tableau appelé map qui est utilisé pour construire la grid.

Dans l’ancien JSFiddle, j’essayais toujours de le faire détecter lorsque l’utilisateur récupérait un passager (la lettre “P” sur la carte). Dans mon dernier JSFiddle, j’ai créé un tableau d’objects en 2D à l’aide de l’aide fournie précédemment. La carte n’est pas entièrement construite, elle devrait ressembler à celle du premier JSFiddle, mais elle semble lire toute la ligne comme étant d’une couleur. Si vous ouvrez votre console et déplacez toute la ligne du haut, celle-ci est lue en vert alors qu’elle ne le devrait pas. Je pense aussi qu’il faut lire les passagers par couleur, ce qui n’est pas ce que je souhaite car les passagers sont sur des carrés de couleurs différentes.

Quelqu’un peut-il m’aider à détecter le moment où un utilisateur récupère un passager? J’ai une fonction qui détecte les carrés avec le “P” mais je dois conserver la même disposition de couleur de la grid. J’espère que cela a du sens.

C’est la fonction:

Vieux JSFiddle:

function checkPass(cell, row) { var pass = map[row][cell]; console.log(pass); if (pass == "p") { alert("Passenger"); } } 

Nouveau JSFiddle:

 function checkPass(cell, row) { var pass = map[row][cell].letter; console.log(pass); if (pass == "p") { alert("Passenger"); } } 

Vous avez un tableau 2×2

 var map = [ [ { color: "g", letter: "" }, { color: "g", letter: "" }, ],[ { color: "w", letter: "p" }, { color: "b", letter: "" } ]]; map[0][1] = ... map[1][1] = ... map[1][0] = ... map[1][1] = ... 

et vous dessinez un bloc 4×1

votre code de carte devrait ressembler à ceci

 var map = [ [ { color: "g", letter: "" }, { color: "g", letter: "" }, { color: "w", letter: "p" }, { color: "b", letter: "" } ]]; 

Le problème vient du tableau, car votre grid a 1 ligne, mais votre tableau a 2 “lignes”. Avec cela, cela a fonctionné pour moi:

 [ { color: "g", letter: "" }, { color: "g", letter: "" }, { color: "w", letter: "p" }, { color: "b", letter: "" } ]