【发布时间】:2011-04-27 16:51:51
【问题描述】:
我正在重新制作一个旧的魔兽争霸 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,对吗?
【问题讨论】:
标签: path-finding a-star