[英]How do I implement A* in Java?
到目前为止,这是我的寻路算法:
public void AAlg(int a, int b){
boolean bool=true;
while(bool) {
bool = false;
for (int i = 0; i <map.length; i++) {
for (int j = 0; j < map.length; j++) {
if(ifObj(i, j)) {
bool=true;
}
}
}
int smallest=N;
int[] coords = new int[2];
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if((i==1&&j==0)||(i==2&&j==1)||(i==1&&j==2)||(i==0&&j==1)) {
findFGH(i+a,j+b);
if(f<smallest) {
smallest=f;
coords[0]=i+a;
coords[1]=j+b;
}
}
}
}
if(coords[0]==N-1&&coords[1]==.N-1) {
System.out.println("The distance travelled is "+cnt);
}
AAlg(coords[0], coords[1]);
cnt++;
}
N 是网格的宽度和高度的长度,地图很好,地图。 它是一个布尔值[][],除了有障碍物的地方外,一切都是假的。 我设想我的代码只是从一个方块到另一个方块,迭代并找到最有效的方块以进行下一步。 有什么错? 它只是无限循环。
这不是为什么您的算法不起作用的答案,而是更多有用的材料来源,您可以查看以了解 A* 通常如何工作。 前段时间我在java中实现了这个算法,最近升级到java13,放到github上:
用于 java13 中 A* 算法项目的 Github 存储库
在此之上是一个 javafx 可视化测试程序,您可以在其中使用从上述模块创建的包。 这可以在以下链接中找到:
如果您已将 maven 设置为与 github 一起使用,我认为第二个项目将自动从 github 获取 A* 包。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.