首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pathFinding.js库-只有第一条路径是正确的

pathFinding.js库-只有第一条路径是正确的
EN

Stack Overflow用户
提问于 2019-03-22 21:08:51
回答 1查看 137关注 0票数 0

我在用PathFinding.js包。我的代码是:

代码语言:javascript
复制
var grid = new PF.Grid(6, 6);
grid.setWalkableAt(0, 1, false);
grid.setWalkableAt(1, 1, false);
grid.setWalkableAt(2, 1, false);
grid.setWalkableAt(3, 1, false);
grid.setWalkableAt(4, 1, false);
grid.setWalkableAt(1, 2, false);
grid.setWalkableAt(0, 3, false);
grid.setWalkableAt(1, 3, false);
var finder = new PF.AStarFinder();
var path1 = finder.findPath(0, 0, 2, 2, grid);
var path2 = finder.findPath(0, 0, 0, 2, grid);
var path3 = finder.findPath(0, 0, 5, 0, grid);
console.log(path1.length)
console.log(path2.length)
console.log(path3.length)

代码演示

这是对上面板的视觉化:

(但x和y正好相反,我在图像中的错误)

我正在检查所有3个绿色点的路径长度,以检查哪一个是最短的。不幸的是,只有第一条路径有正确的长度。为什么?我没有使用正确的包裹吗?我从这个问题的第一行跟踪了链接中的文档。

我不认为这是一个包问题,因为它被广泛使用,在GH有超过6k的恒星。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-23 21:22:36

我在文档中没有注意到这句话:

请注意,网格将在每个路径查找中被修改,以后将无法使用。如果要多次使用单个网格,请在调用findPath之前为其创建一个克隆。

所以我必须创建网格克隆。稍后,我将在循环中使用finder,因此在循环中,每次都需要重新分配网格克隆:

代码语言:javascript
复制
gridBackup = grid.clone();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55307800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档