Étant donné un tableau 2D de toutes les tailles comme ceci:JS: étant donné un point dans un tableau 2d et une distance, quelles coordonnées peuvent être parcourues?
var board = [
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0]
];
... et une donnée [y] [x] point de cette matrice, tels que:
board[3][4]
... et un certain nombre d'espaces, il peut se déplacer (haut/bas/gauche/droite, pas en diagonale), comme:
var distance = 3;
... comment une boucle de fonction à travers le réseau 2D et creat e une liste de seulement les coordonnées qui peuvent être voyagées?
(Voici un exemple visuel des coordonnées données (*) dans le tableau, et les coordonnées pouvant être parcourue autour.)
0 0 0 0 0 0 0 0
0 0 0 3 0 0 0 0
0 0 3 2 3 0 0 0
0 3 2 1 2 3 0 0
3 2 1 * 1 2 3 0
0 3 2 1 2 3 0 0
0 0 3 2 3 0 0 0
0 0 0 3 0 0 0 0
Référence: JS: how to algorithmically highlight a diamond-shaped selection of x/y coordinates? (j'ai posé cette question, mais je ne peux pas comprendre comment entrer une coordonnée et recevoir une liste de coordonnées)
dépend en grande partie sur les détails: peut déplacer le 'voyageur' en diagonale? Peut-il y avoir des «murs» sur la carte (par exemple, une cellule avec un '1' ne peut pas être traversée?) – kikito
Pas de mouvement diagonal direct, une unité doit se déplacer de haut en bas (2 mouvements) pour atteindre une dalle diagonale .Il peut y avoir des murs, mais je pensais d'abord exécuter cette fonction de "diamant à distance" pour obtenir toutes les tuiles à proximité, et fournir un effet de survol à tous ceux qui ne sont pas des obstacles, puis utiliser une fonction pathfinding cliqué. –