给定一个任意大小的二维数组,如下所示:
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]
];
...以及该数组中给定的 [y][x] 点,例如:
board[3][4]
...以及它可以移动的给定空间数量(上/下/左/右,不是对 Angular 线),例如:
var distance = 3;
...一个函数如何循环遍历二维数组并创建一个仅包含那些可能经过的坐标的列表?
(这是数组中给定坐标 (*) 和周围可移动坐标的可视化示例。)
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
引用:JS: how to algorithmically highlight a diamond-shaped selection of x/y coordinates? (我之前问过这个问题,但我不明白如何输入坐标并接收坐标列表)
最佳答案
迭代所有坐标(或子集 x-d,y-d
... x+d,y+d
如果面积很大)。
对于其中的每个字段,计算距离 - 在您的情况下为 dx - dy
- 每当您找到距离 > 0 的点时,就可以用它做任何您想做的事情。否则,忽略它。就是这样!
与 flood-fill 方法相比,您可以获得简单的代码,并且没有额外查找表的开销。
关于javascript - JS : given a point in a 2d array and a distance, 哪些坐标可以旅行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4372307/