以鹏哥视频的思路为基础再结合自身的想法。
头文件图片如下:
#include"扫雷gamehead.h"
void menu()
{
printf("****************************************\n");
printf(" 1.游戏开始 \n");
printf(" 2.游戏结束 \n");
printf("****************************************\n");
}
void initialize(char board[ROWS][COLS], int row, int col,char a)
{
int i, j;
for (i = 0; i < row; i++)
{
for (j = 0; j < col; j++)
{
board[i][j] = a;
}
}
}
void game()
{
int i = 0, j = 0, k = 0, a, b,c=0,d=0,e=0,f=0;
char inboard[ROWS][COLS] = { '0' };
char outboard[ROWS][COLS] = { '*' };
initialize(inboard, ROWS, COLS, '0');
initialize(outboard, ROWS, COLS, '*');
while (1)
{
i = rand() % 9 + 1;
j = rand() % 9 + 1;
if (inboard[i][j] == '0')
{
inboard[i][j] = '1';
k++;
if (k == EAZY)
{
printf("雷已布置好,请开始排雷\n");
k = 0;
break;
}
}
}
while (1)
{
for (i = 0; i <= ROW; i++)
{
printf("%d ", i);
}
printf("\n");
for (i = 0; i < ROW; i++)
{
printf("%d ", i + 1);
for (j = 0; j < COL; j++)
{
printf("%c ", outboard[i][j]);
}
printf("\n");
}
printf("请输入要排查的坐标\n");
scanf_s("%d %d", &i, &j);
printf("请输入确定的雷的位置,如果没有请输入0 0\n");
scanf_s("%d %d", &d, &e);
if (outboard[d - 1][e - 1] == '#')
outboard[d - 1][e - 1] = '*';
outboard[d-1][e-1] = '#';
if (d || e != 0)
{
if (inboard[d ][e ] == '1')
c++;
else
f++;
}
if (inboard[i][j ] == '1')
{
printf("很抱歉,排雷失败\n");
for (i = 0; i <= ROW; i++)
{
printf("%d ", i);
}
printf("\n");
for (i = 0; i < ROW; i++)
{
printf("%d ", i + 1);
for (j = 0; j < COL; j++)
{
printf("%c ", inboard[i+1][j+1]);
}
printf("\n");
}
break;
}
else
{
for (a = i - 1; a <= i + 1; a++)
{
for (b = j - 1; b <= j + 1; b++)
if (inboard[a ][b ] == '1')
k++;
}
outboard[i - 1][j - 1] = '0' + k;
k = 0;
printf("\n");
printf("内棋盘\n");
for (i = 0; i <= ROW; i++)
{
printf("%d ", i);
}
printf("\n");
for (i = 0; i < ROW; i++)
{
printf("%d ", i + 1);
for (j = 0; j < COL; j++)
{
printf("%c ", inboard[i+1][j+1]);
}
printf("\n");
}
printf("\n\n\n");
if (c == EAZY)
{
printf("排雷成功游戏结束\n");
break;
}
}
}
}
int main()
{
char inboard[ROWS][COLS] = { '0'};
char outboard[ROW][COL] = { '0'};
int i=0;
srand(unsigned int(time(NULL)));
menu();
again:
printf("请输入:\n");
scanf_s("%d", &i);
switch (i)
{
case 2:printf("退出成功\n"); break;
case 1:printf("扫雷开始\n");
game();
break;
default:printf("输入错误,请重新输入\n");
goto again;
}
}