分享免费的编程资源和教程

网站首页 > 技术教程 正文

A*自动寻路算法—java版(八方向版)

goqiw 2024-10-25 13:02:26 技术教程 13 ℃ 0 评论

上一篇博客分享了Java版的自动寻路,但是只是上下左右四个方向的,今天把八方向的也分享出来。

既然四方向的已经成功了,那么改进成八方向的,只要注意两个地方就可以了,一个是获取四周方块的时候,一个是移动的时候。

一、获取四周方块

在autofindway.java中添加静态变量,用来标识上下左右四个方向是否可通过。

在获取四周方块的方法aroundFk中,考虑左上、右上、右下、左下四个方块的判断。

其中,上下左右四个方块的判断中,如果可以通过,则将对应的方向(top/down/left/right)标识为true。只有在左边和上边方块都是true的时候,才能去判断左上方方块是否满足条件,否则就存在穿墙现象。

比如下图的四种情况,红点想要移动到左上方的绿点,只有左边和上边(①)都可穿过的时候才能正常移动过去。像图②③④这三种情况如果直接移动,都存在穿墙的现象。

代码如下:只要替换掉四方向版本中的aroundFk就可以了。

二、移动

在basepanel.java中的movePanel方法里面,四方向的版本只做了上下左右四个方向的移动判断,所以这里需要将左上、右上、右下、左下的移动判断添加进来。同样,也是替换掉四方向版本中的这个movePanel方法就可以了。

好了,给大家展示一下结果:

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表