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

📄 main.h

📁 迷宫.控制台应用程序.适合出学c语言又想提高c语言的朋友
💻 H
字号:
#ifndef MAIN_H
#define MAIN_H

//#define DEBUG_1987 1987

//#define MAXSIZE 20

//极限测试
//#define MAZE_ROW		224
//#define MAZE_COL		262
//高难度
#define MAZE_ROW		24
#define MAZE_COL		62
//一般难度
//#define MAZE_ROW		12
//#define MAZE_COL		30
//简单
//#define MAZE_ROW		10
//#define MAZE_COL		30
//迷你型
//#define MAZE_ROW		8
//#define MAZE_COL		20
//测试型
//#define MAZE_ROW		8
//#define MAZE_COL		20

#define SHOW_ROW		8
#define SHOW_COL		20

#define Key_w		'w'
#define Key_s		's'
#define Key_a		'a'
#define Key_d		'd'
#define Key_h		'h'				//
#define Key_p		'p'				//提供迷宫路径帮助
#define Key_m		'm'				//查看地图帮助

#define Key_W		'W'
#define Key_S		'S'
#define Key_A		'A'
#define Key_D		'D'
#define Key_H		'H'				//
#define Key_P		'P'				//提供迷宫路径帮助			
#define Key_M		'M'				//查看地图帮助

#define MAZE_BAR				'#'
#define MAZE_PER				'p'
#define MAZE_EXIT				'8'

#define MAZE_PATH				' '
#define MAZE_PATH_1				'_'
#define MAZE_PATH_2				'+'
#define MAZE_PATH_3				'$'
#define MAZE_PATH_4				'^'
#define OPTIMIZE_MAZE_PATH		'0'
#define MAZE_HELP_PATH			'.'				//迷宫路径帮助标记
#define MAZE_PASS_PATH			'*'				//被走过的路径标记 
#define MAZE_DEAD_PATH			'!'				//死路标记 


#define MAZE_FOOTPRINT			' '
#define SHOW_BAR				'T'

#define DIR_LEFT	0
#define DIR_RIGHT	1
#define DIR_UP		2
#define DIR_DOWN	3

//全拼
//#define DIRECT_WEST	0
//#define DIRECT_NORTH	1
//#define DIRECT_EAST	2
//#define DIRECT_SOUTH	3
//简写
#define DIR_W	1
#define DIR_N	2
#define DIR_E	3
#define DIR_S	4

//bool bDigStop = false;


typedef struct
{
	int iRow;
	int iCol;
}SPos;

typedef struct
{
	char cMazeMap[MAZE_ROW+2][MAZE_COL+2];			//迷宫地图
	SPos spBegin;									//迷宫入口
	SPos spEnd;										//迷宫出口
	SPos spCurrent;									//人在迷宫的当前位置
	char cShowMazeMap[SHOW_ROW][SHOW_COL];			//显示迷宫地图
	SPos spShowCurrent;							 	//显示人在迷宫的当前位置
	SPos spShowBegin;								//显示迷宫地图原点
	//int	iRow;
	//int iCol;
}SMazeMap;

//=====================================================
//函数名:	GameMaze
//参数:		NULL
//返回值:	NULL
//说明:	迷宫游戏
//=====================================================
void GameMaze(void);

//=====================================================
//函数名:	GameLogo
//参数:		NULL
//返回值:	NULL
//说明:	迷宫游戏商标,在迷宫的右侧写点东西
//=====================================================
void GameLogo(void);

//=====================================================
//函数名:	MazeInit
//参数:		SMazeMap *p
//返回值:	NULL
//说明:	初始化迷宫,生成迷宫地图,
//			' ':路径,可以通过;
//			'p':人的当前位置;
//			其它字符:障碍,不可以通过
//=====================================================
void MazeInit(SMazeMap *p);

//=====================================================
//函数名:	SetMazeEnterAndExit
//参数:		SMazeMap *p
//返回值:	NULL
//说明:	设置迷宫的出口与入口
//=====================================================
void SetMazeEnterAndExit(SMazeMap *p);

//=====================================================
//函数名:	CreateMaze
//参数:		SMazeMap *p
//返回值:	NULL
//说明:	生成迷宫,生成迷宫地图,
//			'p':人的当前位置;
//			'#':障碍,不可以通过
//			其他字符:路径,可以通过;
//=====================================================
void CreateMaze(SMazeMap *p);

//=====================================================
//函数名:	MazeFullInit
//参数:		SMazeMap *p
//返回值:	NULL
//说明:	初始化迷宫,生成用障碍填充迷宫地图,
//=====================================================
void MazeFullInit(SMazeMap *p);

//=====================================================
//函数名:	MazeInitPath
//参数:		SMazeMap *p
//返回值:	NULL
//说明:	初始化迷宫,生成迷宫路径,
//			' ':路径,可以通过;
//			'p':人的当前位置;
//			其它字符:障碍,不可以通过
//=====================================================
void MazeInitPath(SMazeMap *p);

//=====================================================
//函数名:	OptimizeMazePath
//参数:		SMazeMap *p
//返回值:	NULL
//说明:	优化迷宫
//=====================================================
void OptimizeMazePath(SMazeMap *p);
//=====================================================
//函数名:	MazeShowInit
//参数:		SMazeMap *p
//返回值:	NULL
//说明:	初始化在屏幕上显示的小迷宫,生成迷宫路径,
//=====================================================
void MazeShowInit(SMazeMap *p);

//=====================================================
//函数名:	DigPath
//参数:		SMazeMap *p		指向迷宫对象
//			SPos *pPos		挖迷宫的开始位置
//			char cMazePathFlag		本次挖迷宫所留下的标记
 //返回值:	SPos *
//说明:	挖迷宫,随机的选择一个方向和长度开始挖
//			' ':路径,可以通过;
//			'p':人的当前位置;
//			其它字符:障碍,不可以通过
//=====================================================
SPos *DigPath(SMazeMap *p,SPos *pPos,char cMazePathFlag );

//=====================================================
//函数名:	OptimizeDigPath(
//参数:		SMazeMap *p		指向迷宫对象
//			SPos *pPos		挖迷宫的开始位置
//			char cMazePathFlag		本次挖迷宫所留下的标记
 //返回值:	SPos *
//说明:	优化迷宫路径,将没挖但还可以挖的地方也挖掉
//=====================================================
SPos *OptimizeDigPath(SMazeMap *p,SPos *pPos,char cOptimizeMazePathFlag );
//=====================================================
//函数名:	Digging
//参数:		SMazeMap *p		指向迷宫对象
//			SPos *pPos		挖迷宫的开始位置
//			char cMazePathFlag		本次挖迷宫所留下的标记
//			int iDir		本次挖的方向
//返回值:	true || false
//说明:	判断该点是否可以被挖,可以返回true,否则返回false
//			用来挖通两个点
//=====================================================
bool Digging(SMazeMap *p,SPos *pPos,char cMazePathFlag, int iDir );
//=====================================================
//函数名:	OptimizeDigging
//参数:		SMazeMap *p		指向迷宫对象
//			SPos *pPos		挖迷宫的开始位置
//			char cMazePathFlag		本次挖迷宫所留下的标记
//			int iDir		本次挖的方向
//返回值:	true || false
//说明:	判断该点是否可以被挖,可以返回true,否则返回false
//			给定一点,挖到任意点结束
//=====================================================
bool OptimizeDigging(SMazeMap *p,SPos *pPos,char cMazePathFlag, int iDir );
//=====================================================
//函数名:	Dig 
//参数:		SMazeMap *p		指向迷宫对象
//			SPos *pPos		挖迷宫的开始位置
//			char cMazePathFlag		本次挖迷宫所留下的标记
//			int iDir		本次挖的方向
//			int iRandomLength
//返回值:	SPos *
//说明:	挖迷宫
//=====================================================
SPos *Dig(SMazeMap *p,SPos *pPos,char cMazePathFlag, int iDir, int iRandomLength );
//=====================================================
//函数名:	OptimizeDig 
//参数:		SMazeMap *p		指向迷宫对象
//			SPos *pPos		挖迷宫的开始位置
//			char cMazePathFlag		本次挖迷宫所留下的标记
//			int iDir		本次挖的方向
//			int iRandomLength
//返回值:	SPos *
//说明:	优化挖迷宫
//=====================================================
SPos *OptimizeDig(SMazeMap *p,SPos *pPos,char cMazePathFlag, int iDir, int iRandomLength );

//=====================================================
//函数名:	GoUp
//参数:		SMazeMap *p
//返回值:	NULL
//说明:	当玩家按下 'w' 或 'W' 键并且地图向上可以通过,
//			就向上走一步
//=====================================================
void GoUp(SMazeMap *p);
//=====================================================
//函数名:	 
//参数:		SMazeMap *p
//返回值:	NULL
//说明:	 
//=====================================================
void GoDown(SMazeMap *p);
//=====================================================
//函数名:	 
//参数:		SMazeMap *p
//返回值:	NULL
//说明:	 
//=====================================================
void GoLeft(SMazeMap *p);
//=====================================================
//函数名:	 
//参数:		SMazeMap *p
//返回值:	NULL
//说明:	 
//=====================================================
void GoRight(SMazeMap *p);

//=====================================================
//函数名:	MazeShow
//参数:		SMazeMap *p
//返回值:	NULL
//说明:	显示迷宫,只显示小地图。玩家按帮助 'h' 或 'H' 键
//			来查看全地图
//=====================================================
void MazeShow(SMazeMap *p);

//=====================================================
//函数名:	MazeHelp
//参数:		SMazeMap *p
//返回值:	NULL
//说明:	当玩家按了帮助 'h' 或 'H' 键,
//			显示全地图。按任意键就退出显示,继续走迷宫。
//=====================================================
void MazeHelp(SMazeMap *p);

//=====================================================
//函数名:	MazeExit
//参数:		NULL
//返回值:	NULL
//说明:	玩家离开游戏
//=====================================================
void MazeExit(void);

//=====================================================
//函数名:	clrscr
//参数:		NULL
//返回值:	NULL
//说明:	清屏
//=====================================================
int clrscr();

//=====================================================
//函数名:	ClearHelpMap
//参数:		NULL
//返回值:	NULL
//说明:	清屏,清除帮助地图
//=====================================================
int ClearHelpMap();
//=====================================================
//函数名:	ClearHelpMap
//参数:		NULL
//返回值:	NULL
//说明:	清屏,清除帮助地图
//=====================================================
int ClearShowMap();
//=====================================================
//函数名:	ControlPersonOfMaze
//参数:		SMazeMap *p
//返回值:	NULL
//说明:	通过上下左右('w','s','a','d')来控制迷宫中的小人'p'
//=====================================================
void ControlPersonOfMaze(SMazeMap *p);
//=====================================================
//函数名:	ExitMaze
//参数:		SMazeMap *p
//返回值:	true || false
//说明:	判断小人'p'是否逃出迷宫,如果是返回true,否则返回false
//=====================================================
bool ExitMaze(SMazeMap *p);

//=====================================================
//函数名:	SuccessExitMaze
//参数:		NULL
//返回值:	true || false
//说明:	小人'p'逃出迷宫,给点鼓励
//=====================================================
void SuccessExitMaze(void);
//=====================================================
//函数名:	FailExitMaze
//参数:		NULL
//返回值:	true || false
//说明:	小人'p'逃出迷宫,给点鼓励
//=====================================================
void FailExitMaze(void);
#endif

⌨️ 快捷键说明

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