回复 8楼 Devil_W
正找人破解出代码呢...
不过,可以给接口, 你如果不相信是 A*,可以写个 BFS,比比速度嘛
/**
* Title: A* algorithm
* Author: BlueGuy
*/
// 路径结构
typedef struct tagAStartPaht
{
// 结点 x 坐标
short x;
//结点 y 坐标
short y;
} AstarPath;
//路径长度
short astarPathCount;
// 路经表
AstarPath* astarPath = NULL;
// 链表结点结构
typedef struct tagAStartListNode
{
// 结点 x 坐标
short x;
// 结点 y 坐标
short y;
// 当前结点到起始结点的代价
short f;
// 当前结点到目标结点的代价
short g;
// 总代价
short h;
// 当前结点父结点
struct tagAStartListNode* father;
// 当前结点子结点
struct tagAStartListNode* next;
} AStartListNode;
// A*算法结构
typedef struct tagAStar
{
// open 表
AStartListNode* openHead;
// closed 表
AStartListNode* closedHead;
} AStar;
/**
* A*初始化
*/
AStar* newAstar()
{
}
/**
* A*释放
*/
void deleteAStar(AStar* astar)
{
}
/**
* 结点初始化
*/
void AStarNodeInit(AStartListNode* current, AStartListNode* father, short x, short y, short endX, short endY)
{
}
/**
* 取得成本最小的结点
*/
static AStartListNode* AStarGetMinCostNode(AStar* astar)
{
}
/**
* 添加结点到链表
*/
static void AStarAddNode(AStartListNode* head, AStartListNode* node)
{
}
/**
* 从链表中删除结点
*/
static void AStarRemoveNode(AStartListNode* head, AStartListNode* node)
{
}
/**
* 检查Tile是否在链表中
*/
static short AStarIsInList(short x, short y, AStartListNode* head)
{
}
/**
* 检查Tile是否是地图的路障
*/
static short AStarIsBlock(short x, short y)
{
}
/**
* 查找路径
*/
int AStarSearch(char map[][10], short mapWidth, short mapHeight,
short startX, short startY, short endX, short endY, AstarPath* astarPath)
{
}
[
本帖最后由 BlueGuy 于 2011-9-25 15:17 编辑 ]