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

📄 cfindpath.h

📁 一个个人开发的rpg游戏<亚特兰蒂斯传奇>的源码
💻 H
字号:
//A*寻路算法
//作者:吴振华(kylinx)(中国科大01级11系)
//E-mail:game-diy@163.com
//Created 2003/6/27 by Kylinx

#ifndef LOA_FIND_PATH_H_
#define LOA_FIND_PATH_H_
#define LOA_MAX_DISTANCE				65535		//两点间最大距离
#include<windows.h>
#include"klds.h"
struct STPathTree
{
	int nMapX;										//地图上的x坐标
	int nMapY;										//地图上的y坐标
	int nSearchDepth;								//搜索的深度

	STPathTree*pParent;								//父节点
	
	STPathTree()
	{
		pParent=NULL;
	}
	STPathTree(int x,int y,int depth,STPathTree*Parent)
	{
		nMapX=x;
		nMapY=y;
		nSearchDepth=depth;
		this->pParent=Parent;
	}
};
struct STPath
{
	int nLength;
	POINT*pPos;

	STPath()
	{
		nLength=0;
		pPos=NULL;
	}
	~STPath()
	{
		nLength=0;
		if(pPos)
		{
			delete [] pPos;
			pPos=NULL;
		}
	}
};
class CMap;
class CLog;
class CAStarFindPath
{
	CLog					*m_pLog;				//日志
	CMap					*m_pMap;				//地图数据
	int						**m_ppBest;				//历史最好纪录
	CLagQueue<STPathTree*>	*m_pOpen;				//Open表
	KGDStack<STPathTree*>	*m_pClose;				//Close表

	int						m_nSourX,m_nSourY;
	int						m_nDestX,m_nDestY;

	int	Evaluation(int x,int y);					//评估函数
	BOOL TryTile(int x,int y,STPathTree*pRoot);		//尝试下一个
	void Release();									//释放
public:
	CAStarFindPath();
	virtual ~CAStarFindPath();

	BOOL FindPath(CLog*pLog,CMap*pMap,int SourX,int SourY,int DestX,int DestY,STPath&Path);
													//从SourX,SourY点找一条最短路径到DestX,DestY
													//路径保存在pPath中
	
};
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -