目录
前言
扫雷这款游戏是我最喜欢的小游戏之一了,也是伴随了我的童年的一款小游戏之一。而扫雷同时是编程的入门小游戏之一,那么今天让我来教教你如何在自己的电脑上制作并运行扫雷游戏吧。
程序设计思路
在实现任何项目时,有一个清晰的设计思路非常重要。
而扫雷游戏需要有以下的设计思路:
- 创建并初始化棋盘
- 设置地雷
- 打印棋盘
- 玩家排雷
程序设计
创建棋盘
在创建棋盘前,我们先要了解扫雷棋盘的构造。
首先,棋盘得有地方放置地雷,但是又不能给玩家发现,我们可以创建两个数组,一个数组存放地雷的信息,另一个数组存放玩家的扫雷情况就可以解决这个问题。
接着,棋盘该设置多大呢?我们知道正常的扫雷游戏简单模式为9*9,那么我们可以在面向玩家的数组创建一个9*9的数组,但是地雷信息呢?我们来看看下面图:
因为最上面和最下面加上左右第一列都会往外面访问多一行或者一列,所以我们可以在四边分别再加上一行或一列,即9*9的棋盘,我们要在地雷信息的数组上创建11*11的大小。
为了让扫雷游戏更具有可玩性,我们可以对棋盘的大小进行宏定义
#define ROW 9
#define COL 9
#define ROWS ROW+2
#define COLS COL+2
char mine[ROWS][COLS] = { 0 };
char show[ROWS][COLS] = { 0 };
这里顺便解释以下为什么两个数组都用了+2的大小,因为在之后玩家的输入以及对棋盘的处理较为方便,无需对玩家输入的值进行预处理就可以在数组中直接应用。
初始化棋盘
因为两组数组存放的内容都不一样,所以在这次的初始化棋盘的函数中加多了一个set参数,目的是为了使棋盘初始化成想要的内容。
void init_board(char(*bp)[COLS], int rows, int cols, char set)
{
int i = 0;
int j = 0;
for (i = 0; i < rows; i++)
{
for (j = 0; j < cols; j++)
{
(* (bp + i))[j] = set;
}
}
}
因此,地雷信息的数组初始化成‘0’,而显示出来的棋盘初始化为‘*’。
init_board(mine, ROWS, COLS, '0');
init_board(show, ROWS, COLS, '*');
设置地雷
初始化棋盘后,我们就应该对地雷进行设置。在设置地雷时我们又需要获取随机值,需要使用到rand函数,所以我们需要在main函数中设置srand函数以启用rand函数。有关rand函数的细节,大伙可以参考以下网址进行深究。https://legacy.cplusplus.com/reference/cstdlib/rand/?kw=rand
srand((unsigned int)time(NULL));
注意:使用srand