基本流程
1.打印菜单,选择是否进行游戏
2.创建两个二维数组存储数据,一个存储布置好雷的信息,一个存放排查出雷的信息
3. 初始化棋盘,布置好的雷用 ‘0’表示,向玩家展示的棋盘上的界面用’*'表示
4.打印展示给玩家的棋盘
5.布置雷
6.排查雷
我们想要的棋盘效果是这样的
代码实现
解释一下定义的宏的意思
ROW&COL : 布置雷的区域的棋盘的行和列
ROWS&COLS : 整个棋盘的行和列(为了便于计算当前格子周围的雷的总个数,防止数组越界,整个棋盘的行和列是ROW+2和COL+2)
EASY_COUNT : 简单模式的布置的雷的总个数(后续可以增加难度)
1.首先了解一下整个游戏的实现流程
void game()
{
//创建棋盘
char mine[ROWS][COLS] = {
0 };//存放布置好雷的信息
char show[ROWS][COLS] = {
0 };//存放排查出雷的信息
//初始化棋盘
Initboard(mine,ROWS,COLS,'0');//布置好的雷用'0'表示
Initboard(show,ROWS,COLS,'*');//展示给玩家的棋盘用'*'表示
//打印棋盘
Printboard(show,ROW,COL);
//布置雷
Setmine(mine,ROW,COL);
//排查雷
Findmine(mine,show,ROW,COL);
}
int main()
{
int input = 0;
do
{
srand((unsigned int)time(NULL));//随机布置雷用随机值,需要调用srand函数
menu();//打印菜单
printf("请选择:>");
scanf("%d",&input);
switch(input)
{
case 1:
printf("扫雷游戏\n");
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("输入错误,请重新输入\n");
break;
}
} while(input);
return 0;
}
2.创建两个棋盘
char mine[ROWS][COLS] = {
0 };//存放布置好雷的信息
char show[ROWS][COLS] = {
0 };//存放排查出雷的信息
3.初始化两个棋盘
函数实现
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;
}
}
}
4.打印棋盘
函数实现
void Printboard(char board[ROWS][COLS],int row,int col)
{
int i = 0;
int j = 0;
for(i = 0 ; i <= row ; i++)