📄 astarpathfind.h
字号:
#ifndef _ASTARPATHFIND_H
#define _ASTARPATHFIND_H
#include "assert.h"
class CAStarPathFind
{
public:
CAStarPathFind(int xStart,int yStart,int xEnd,int yEnd,int xSpeed,int ySpeed);
CAStarPathFind(POINT ptStart, POINT ptEnd, int xSpeed, int ySpeed);
~CAStarPathFind();
int PathFind(POINT **pptPath);
/*以下与地图坐标计算有关,以后再修改,改为CMap *map*/
void SetMapData(int *Map,int nMapWidth,int nMapHeight,int nTileWidth,int nTileHeight);
/*************************************************/
private:
struct NODE
{
int x,y; //坐标(x,y)
int g,h; //f(n)=g(n)+h(n)
NODE *pParent; //父结点
NODE *pNext; //下一个结点
};
// NODE *m_OPEN;
// NODE *m_CLOSED;
int m_xStart,m_yStart; //起始点坐标
int m_xEnd,m_yEnd; //终点坐标
int m_xSpeed,m_ySpeed; //XY方向的移动速度
POINT *m_ptPath;
int H(int x, int y); //评估函数
void ExpandPoint(POINT *pt, int x, int y); //计算八个方向的坐标点
void MakePath(NODE *pHead); //计算最佳路径,放到pt数组中
void FreeLink(NODE *pHead); //释放链表
/*以下与地图坐标计算有关,以后再修改,改为CMap *map*/
int m_nMapWidth, m_nMapHeight, m_nTileWidth, m_nTileHeight;
int *m_Map;
int TileX(int x);
int TileY(int y);
/*************************************************/
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -