C++实现扫雷小游戏(控制台版)实现扫雷小游戏(控制台版)
本文为大家分享了C++实现扫雷小游戏的具体代码,供大家参考,具体内容如下
程序功能:程序功能:
提供三种模式:初级、中级、高级
操作模式:wsad控制光标移动,空格键打开方块
提供扫雷地图的类
map.h
#ifndef MAP_H_
#define MAP_H_
#define MAX_LENGTH 32 //可以提供的地图最大长度
#define MAX_WIDTH 18 //可以提供的地图最大宽度
#define UP_EDGE 1 //上边界
#define DOWN_EDGE _wid //下边界
#define LEFT_EDGE 1 //左边界
#define RIGHT_EDGE _lng //右边界
void gotoxy(int, int); //移动光标的接口函数
struct Position{
int x;
int y;
};
struct Info{
int n; //用于标记雷、数字、空格的属性
bool flag; //用于标记是否要打开方块
};
class Map{
private:
int _lng, _wid; //长和宽
int _mines, _blanks; //雷数、未开启空格数目
Position _pos = {1, 1}; //光标位置
Info data[MAX_WIDTH][MAX_LENGTH]; //包含地图信息的矩阵
public:
void AcceptCond(); //选择模式
void InitMap(); //初始化地图
void SetMine(); //布置地雷
void SetNumber(); //计算数字
void SetPosition(); //移动光标至指示区域
void ResetPosition(); //重置初始坐标
void ShowMap(); //显示地图
void ShowAll(); //显示全部地图,游戏失败时候调用
void OpenBlock(); //打开方块,即将 flag 值设置为 true,在 ShowMap() 中将打开方块
void FirstStep(); //预先处理游戏,防止第一步就触雷导致失败,这是无意义的
bool PlayGame(); //提供的游戏操作接口
bool Move(char); //移动光标,同时改变 _pos 的值用于指代目前要访问(打开)的方块
bool IfLose(); //游戏失败,则返回真
bool IfWin(); //游戏成功,则返回真
};
#endif
实现思路:
1.接收游戏模式参数,确定地图规模
2.初始化地图,值全部设置为 0,flag 全部设置为 false,表示未曾打开
3.根据用户操作,确定要打开的第一个空格的,然后再开始布雷,避免开局触雷结束,这样没什么意义。
评论0
最新资源