javascript - JS : given a point in a 2d array and a distance, 哪些坐标可以旅行?

标签 javascript arrays multidimensional-array 2d tiles

给定一个任意大小的二维数组,如下所示:

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/

相关文章:

javascript - 使用 Flask 时出错 Angular.js

javascript - 更改匹配列表中项目的颜色

c - 如何找到数组的大小(从指向数组第一个元素的指针)?

ruby - 我可以在散列定义中放置某种形式的 If..End block 吗?

c# - 如何在 C# 中获取对多维数组的单个维度的引用?

php - 在 CodeIgniter 中循环遍历多维数组

javascript - 如何处理预输入中的对象?

javascript - jQuery - 检查函数是否已定义

java - 在 java 中可变长度参数概念。但我又得到了错误的答案

java - 如何返回包含二维数组中最小值的列 ID (Java)