A*寻路算法入门(三)

时间:2021-10-13 04:25:08

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.
如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;)


免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流之用,请勿进行商业用途。同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该翻译稿之人无任何关系。谢谢合作!

像那样划分,我们的搜索区域可以简单的描述成地图瓦片的2维数组.所以如果关卡的地图是25*25块瓦片,则我们的搜索区域将为一个包括625个正方形的数组.如果我们将地图按像素划分,则搜索区域将是一个包含640,000个正方形的数组(每个瓦片是32*32个像素)!

所以让我们根据屏幕截图开始将搜索区域按瓦片划分为数组表示(在我们这个简单的例子中,地图的瓦片尺寸为 7x6 = 42块)”

A*寻路算法入门(三)

开放和闭合列表

现在我们已经创建了一个简单的搜索区域,让我们讨论一下A*算法是如何工作的.

除了懒以外,我们的猫咪的记性也不太好,所以它需要2张表:

  1. 一张记录所有在寻找最短路径中被考虑到的正方形(称之为开放列表 open list)
  2. 另一张记录那些不需要再次考虑的正方形(称之为闭合列表 closed list)

猫咪从添加自己的当前位置(我们将这个开始位置称之为点A)到闭合列表中开始.然后,它添加所有当前位置相邻的可达瓦片到开放列表中.

这里有一个在空白区域如何添加例子的示意图(绿色表示在开放列表中):

A*寻路算法入门(三)

现在这只猫咪需要确定这些选择中的哪一个是最短路径,但是如何选择呢?

在A*寻路算法中,这通过给每一个正方形一个分值来确定,这称之为路径评分.让我们在下一篇中看一下它是如何工作的!