最近在用javafx尝试做一款简单的2D游戏,涉及到自动寻路问题,经过搜索后发现A*算法可用性高。因为没有扎实的算法基础,就用了简单的曼哈顿函数做为F来实现A*算法。实现了通过修改代码来设置障碍。


基本步骤按照百度百科中的伪代码来实现:
原文地址:https://baike.baidu.com/item/A%2A%E7%AE%97%E6%B3%95/215793?fr=aladdin
while(OPEN!=NULL)
{
从OPEN表中取f(n)最小的节点n;
if(n节点==目标节点)
break;
for(当前节点n的每个子节点X)
{
计算f(X);
if(XinOPEN)
if(新的f(X)<OPEN中的f(X))
{
把n设置为X的父亲;
更新OPEN表中的f(n);
}
if(XinCLOSE)
continue;
if(Xnotinboth)
{
把n设置为X的父亲;
求f(X);
并将X插入OPEN表中;//还没有排序
}
}//endfor
将n节点插入CLOSE表中;
按照f(n)将OPEN表中的节点排序;//实际上是比较OPEN表内节点f的大小,从最小路径的节点向下进行。
}//endwhile(OPEN!=NULL

本文介绍了使用JavaFX进行A*算法的可视化实现,特别是结合曼哈顿距离作为F值来解决自动寻路问题。作者通过详细步骤遵循百度百科的伪代码,并创建了一个名为starNote的类来表示节点,实现了障碍物的设置。最终实现的算法在10ms-14ms内生成路径。完整代码已上传至GitHub。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



