寻路模块需要以下接口:
class FindPath
{
public:
//导入黑白图
void loadMap(const char* path);
//指定坐标是否可行走
bool canWalk(Point p);
//两点之间是否可直达
bool canDistance(Point begin, Point end);
//两点间寻路, param3: 路径点集合
void findPath(Point begin, Point end, std::vector
& v);
};
具体实现:
1,用a星算法来寻路。代码:astar.zip
2,优化, 以上a星算法是用像素点为单位来搜索,效率极低, 所以在黑白图上设置一些路径点, 找到离起点最近的一个路径点,a星寻路,之后用路径点之间搜索; 到离终点最近的路径点时,再a星计算。代码: not finished.
阅读(726) | 评论(0) | 转发(0) |