A*算法适合在静态环境中寻路,也就是说周围的物体不会动态的移动。
需要2个表,分别保存待检测和已检测的格子:
openTable保存的就是当前格子四周的格子(最多为8个),只保存满足条件的格子,不能是障碍物 或者出屏幕了。
你可以这样来初始化它们:
openTable = [[NSMutableArray alloc] initWithCapacity:map.mapSize.width*map.mapSize.height];closeTable = [[NSMutableArray alloc] initWithCapacity:map.mapSize.width*map.mapSize.height];
看看A*算法的核心代码:
看看 bestTilePoint 函数:
总之 bestTilePoint函数就是用来找到最合适的移动方向。
看看 是如何处理每一个格子的:
DEMO下载