astarpathfind.h

来自「演示一个寻找最短路径的算法。」· C头文件 代码 · 共 48 行

H
48
字号
#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 + =
减小字号Ctrl + -
显示快捷键?