目录
1.游戏规则
扫雷相信大家都玩过,但是我还是要大概说一下这个游戏的规则。以vs这个运行窗口玩的扫雷,肯定没有正规的软件小程序来的全面,希望大家见谅。就拿简单模式来讲,是一个9*9的方阵内,随机安排10个雷,然后通过对每一个位置的周围一圈的8个位置,判断是否有雷,并将他们的数量统计加起来放在中间的位置。通过不断地推断排雷最终把10个雷排出来。管你听没听懂,看就完啦。
2.游戏代码的框架
- game.h --- 游戏函数的声明定义
- test.c --- 游戏的测试
- game. c --- 游戏函数的实现
3.游戏函数的一一解析
1。对于一些宏定义,头文件
#include<stdlib.h>
#include<time.h>
这两个头文件是用来生成随机数所必须的。
EASY_COUNT 代表着雷的数量
因为9*9的数组,在边界线的上的数组元素,找他的一周的雷的数量是会出现数组越界的情况,所以需要将数组的行和列设置位11行。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define EASY_COUNT 10
#define ROW 9
#define COL 9
#define ROWS 11
#define COLS 11
2.初始化一个棋盘
初始化棋盘,我们需要初始化两个棋盘,一个给玩家看,一个不给,这样做可以更方便的。mine字符数组代表设置雷区的一个棋盘,show字符数组代表着给玩家展示的棋盘。
这样的一个函数,参数中给到字符数组board,行数列数,还有一个字符。通过for循环将整个数组的元素都赋值set,这个set不同的棋盘给不同的字符。
void InitBoard(char board[ROWS][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++)
{
board[i][j] = set;
}
}
}
3.打印棋盘
如果直接打印这个9*9的数组的话,会让玩家很难找打要找的位置,所以我们可以给每行每列标上数字,这样可以方便玩家找到需要排雷的位置下标。如图所示的样子。
代码的实现。先打印一行扫雷标志。通过for循环打印第一行的数字提示1-9,然后换行,循环打印每一行的元素,但是在每一行的前面需要打印数字提示,所以打印元素的循环就需要嵌套在内部,因为这个数组的首元素下标是0,二我们给的提示是1,并且玩家输入的也是提示数字,所以for循环需要从下标1开始,循环打印每一个元素,这样就可以打印出一个完整的棋盘,最后也可以再打印扫雷提示的标志。
void DisplayBoard(char board[ROWS][COLS], int row, int col)
{
int i = 0;
int j = 0;
printf("-------扫雷--------\n");
for (j = 0; j <= row; j++)
{
printf("%d ", j);
}
printf("\n");
for (i = 1; i <= col; i++)
{
printf("%d ", i);
for (j = 1; j <= col; j++)
{
printf("%c ", board[i][j]);
}
printf("\n");
}
printf("-------扫雷--------\n");
}