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

📄 findpath.h

📁 vc写的源程序,是关于游戏类的程序。调用了系统的很多API
💻 H
字号:
#ifndef _FINDPATH_H_
#define _FINDPATH_H_

#include <windows.h>
#include <windowsx.h>

// 宽度优先树节点的结构
typedef struct NODE
{
	int x, y;       // 地图上的位置
	int number;     // 地图上位置的代号
	NODE *child[8]; // 八个方向
	NODE *parent;   // 指向上一个节点的指针
}*LPNODE;

// 堆栈的结构
typedef struct STACK
{
	LPNODE node;    // 指向节点的指针
	STACK *next;
}*LPSTACK;

class CFindPath  
{
private:
	LPNODE  Root;           // 宽度优先树根节点的指针
	LPSTACK Stack1, Stack2; // 两个堆栈用于存储已扩展和待扩展的节点
	int     *Map, *MapBak;  // 指向地图的指针和地图备份
	int     SrcPoint, DestPoint; // 起始点和目标电
	int     Width, Height;  // 地图的宽和高
	int     TileCount;      // Tile的总数
	BOOL    FindOk;         // 查找成功标志
	LPNODE  DestNode;       // 指向目的地节点的指针
	int     Step;           // 路径有多少步
	LPSTACK Path;           // 存放路径的堆栈
	LPSTACK Nodes;          // 存放树中的每一个节点的地址,以便快速释放
public:
	BOOL SetMap(int *m, int range1, int range2);
	BOOL PopPath(int &x, int &y);
	int GetTileCount() {return TileCount;};
	int GetHeight() {return Height;};
	int GetWidth() {return Width;};
	int GetStep() {return FindOk ? Step : 0;};
	void FreeAll();
	BOOL GetPath();
	BOOL CreateNode8(LPNODE n);
	LPNODE Pop();
	void Push(LPNODE n);
	BOOL CreateNode();
	BOOL FindPath(int sx, int sy, int dx, int dy);
	int *GetTilePtr(int x, int y) {return Map + y * Width + x;};
	int GetTileType(int x, int y) {return *(Map + y * Width + x);};
	int GetTileNum(int x, int y) {return y * Width + x;};
	CFindPath(int *m, int w, int h, int range1, int range2);
	virtual ~CFindPath();

};

#endif // !defined(_FINDPATH_H_)

⌨️ 快捷键说明

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