a *寻路 - 后继成本

时间:2011-04-27 16:51:51

标签: path-finding a-star

我正在改造一个古老的魔兽争霸3定制游戏,我过去常常将游戏放回到iphone上。基本上,你有一定的时间来构建一定数量的模块中的迷宫,蠕动运行迷宫所需的时间越长,得到的分数就越多。

我正在使用cocos2d进行播放,现在我正在使用a *寻路算法。我正在使用Justin Heyes-Jones' implementation并正在处理节点类。

然而,有几件事令我困惑。该课程如下:

class MapSearchNode
{
public:
    unsigned int x;  // the (x,y) positions of the node
    unsigned int y; 


    MapSearchNode() { x = y = 0; }
    MapSearchNode( unsigned int px, unsigned int py ) { x=px; y=py; }

    bool IsGoal( MapSearchNode &nodeGoal ) { return (x == nodeGoal.x && y == nodeGoal.y); }
    bool IsSameState( MapSearchNode &rhs ) { return (x == rhs.x && y == rhs.y); }

    float GoalDistanceEstimate( MapSearchNode &nodeGoal );
    float GetCost( MapSearchNode &successor );
    bool GetSuccessors( AStarSearch<MapSearchNode> *astarsearch, MapSearchNode *parent_node );

    //void PrintNodeInfo();
};

我只是不确定GetCost是什么意思。在这个示例迷宫中,X是墙,_是可步行区域,从(3,1)到(3,2)的成本是0吗?那么从(3,1)到(4,1)的成本是多少,因为这是不可能的?

X X _ X X
X _ _ X X
X _ X X X
X _ _ _ _
X X X X X

然后我想我可以通过使用距离公式来实现GoalDistanceEstimate,对吗?

2 个答案:

答案 0 :(得分:1)

据我了解,成本是确定“最快路径”的“总合计”。为每个他们必须去的广场或节点添加成本。这还可能包括地形限制(例如减慢速度等)。

答案 1 :(得分:1)

一般A *基于加权图。在实际的迷宫解决应用中,所有边缘对于可通过的地形具有相同的有限权重(通常为1),并且无限(写为非常大的数字,仅使用100000或其他)用于不通的地形。