⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 astarpathfind.h

📁 演示一个寻找最短路径的算法。
💻 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 + -