📄 main.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 + -