一、控件功能描述
本控件主要是用A*算法实现游戏地图中寻路算法的一个助手,帮助寻找二维地图上从一个点到另一个点的最优路线0
二、实现策略
实现的策略我主要是参考的 http://www.cnblogs.com/technology/archive/2011/05/26/2058842.html
算法理解如下:
要寻找二维地图中两点的最短路径那么最理想的情况当然是直接走过去,但是往往地图中存在各种障碍物使我们不得不绕道而行,那么复杂多变的地图如何快速的找到路径呢。往往实现这种最优算法比较通用的算法是 动态规划 和 贪心算法。而本文讲到的A* 我认为是一种贪心的过程。其贪心的公式为 :
f = g + h
f 为最终决策的值, g 为 移动到当前点所需的消耗,h 为从当前点到终点的理想最短距离。
有了贪心的公式,下面我们就开始贪心的过程。从起点向各个方向移动,然后计算 f 值,然后 再从其中选择 f 值最小的再尝试移动,如果移动过程中出现移动到的点已经存在于原先移动路径中,那么判断当前移动到此点的 f 是否比原先要 更好(就是f 更小)。是则将原先的路径修复。这样一路寻找,直到 找到终点/所有的点都走玩 为止。
三、实现思考
无
四、实现源码
https://github.com/xzben/GameFrame/blob/master/client/GameClient/src/core/PathFindHelper.lua