#define _CRT_SECURE_NO_WARNINGS 1
#define ROW 11//控制棋盘的行
#define COL 11//控制棋盘的列
#include <stdio.h>
#include <time.h>
#include <string.h>
#include <stdlib.h>
void ResetBoard(char Board[ROW][COL], int row, int col)
{
int i, j = 0;
for (i = 1; i <= row - 2; i++)
{
for (j = 1; j <= col - 2; j++)
{
Board[i][j] = ' ';
printf(" %c ", Board[i][j]);
if (j < col - 2)
{
printf("|");
}
}
printf("\n");
for (j = 1; j <= col - 2; j++)
{
if (i < col - 2)
{
printf("---");
if (j < col - 2)
{
printf("|");
}
}
}
printf("\n");
}
}
void Mine(char Board[ROW][COL], int row, int col)
{
int x, y = 0;
x = rand() % (row - 2) + 1;
y = rand() % (col - 2) + 1;
for (int i = 0; i <= 9; i++)
{
if (Board[x][y] == ' ')
{
Board[x][y] = '*';
}
}
}
int Play(char Board[ROW][COL], int row, int col)
{
int x = 0;
int y = 0;
int Boom = 0;
int count = 0;
printf("输入坐标:");
scanf("%d%d", &x, &y);
if (Board[x][y] == '*')
{
return 0;
}
for (int i = 1; i <= row - 2; i++)
{
for (int j = 1; j <= col - 2; j++)
{
if (Board[i][j] == ' ')
{
count++;
if (count == 0)
{
return 1;
}
}
}
}
for (int i = x - 1; i <= x + 1; i++)
{
for (int j = y - 1; j <= j + 1; j++)
{
if (Board[i][j] == '*')
{
Boom++;
}
}
}
if (Board[x][y] == ' ')
{
Board[x][y] = Boom;
}
}
void PlayBoard(char Board[ROW][COL], int row, int col)
{
int i, j = 0;
for (i = 1; i <= row - 2; i++)
{
for (j = 1; j <= col - 2; j++)
{
printf(" %c ", Board[i][j]);
if (j < col - 2)
{
printf("|");
}
}
printf("\n");
for (j = 1; j <= col - 2; j++)
{
if (i < col - 2)
{
printf("---");
if (j < col - 2)
{
printf("|");
}
}
}
printf("\n");
}
}
void menu()
{
printf("**************************\n");
printf("***** 1.play 0.exit *****\n");
printf("**************************\n");
printf("输入1开始游戏 输入0退出游戏:\n");
}
void game()
{
char Board[ROW][COL] = { 0 };
ResetBoard(Board, ROW, COL);
while (1)
{
int back = 0;
Mine(Board, ROW, COL);
printf("请输入坐标:\n");
Play(Board, ROW, COL);
PlayBoard(Board, ROW, COL);
back = Play(Board, ROW, COL);
if (back == 0)
{
printf("BOOOOOOOM!!!\n");
break;
}
if (back == 1)
{
printf("获胜!\n");
break;
}
}
}
int main()//自建扫雷游戏
{
int input = 0;
srand((unsigned int)time(NULL));//这个用的是 stdlib.h,而不是string.h
do
{
menu();
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 2:
printf("退出游戏!\n");
break;
default:
printf("输入错误,请重新输入!\n");
break;
}
} while (input);
}
修改如下,供参考:
#define _CRT_SECURE_NO_WARNINGS 1
#define ROW 11//控制棋盘的行
#define COL 11//控制棋盘的列
#include <stdio.h>
#include <time.h>
#include <string.h>
#include <stdlib.h>
void ResetBoard(char Board[ROW][COL], int row, int col)
{
int i, j = 0;
for (i = 1; i <= row - 2; i++)
{
for (j = 1; j <= col - 2; j++)
{
Board[i][j] = ' ';
printf(" %c ", Board[i][j]);
if (j < col - 2)
{
printf("|");
}
}
printf("\n");
for (j = 1; j <= col - 2; j++)
{
if (i < col - 2)
{
printf("---");
if (j < col - 2)
{
printf("|");
}
}
}
printf("\n");
}
}
void Mine(char Board[ROW][COL], int row, int col)
{
int x, y = 0;
x = rand() % (row - 2) + 1;
y = rand() % (col - 2) + 1;
for (int i = 0; i <= 9; i++)
{
if (Board[x][y] == ' ')
{
Board[x][y] = '*';
}
}
}
int Play(char Board[ROW][COL], int row, int col)
{
int x = 0;
int y = 0;
int Boom = 0;
int count = 0;
printf("输入坐标:");
scanf("%d%d", &x, &y);
if (Board[x][y] == '*')
{
return 0;
}
for (int i = 1; i <= row - 2; i++)
{
for (int j = 1; j <= col - 2; j++)
{
if (Board[i][j] == ' ')
{
count++;
if (count == 0)
{
return 1;
}
}
}
}
for (int i = x - 1; i <= x + 1; i++)
{
for (int j = y - 1; j <= y + 1; j++) //for (int j = y - 1; j <= j + 1; j++)
{
if (Board[i][j] == '*')
{
Boom++;
}
}
}
if (Board[x][y] == ' ')
{
Board[x][y] = Boom;
}
}
void PlayBoard(char Board[ROW][COL], int row, int col)
{
int i, j = 0;
for (i = 1; i <= row - 2; i++)
{
for (j = 1; j <= col - 2; j++)
{
printf(" %c ", Board[i][j]);
if (j < col - 2)
{
printf("|");
}
}
printf("\n");
for (j = 1; j <= col - 2; j++)
{
if (i < col - 2)
{
printf("---");
if (j < col - 2)
{
printf("|");
}
}
}
printf("\n");
}
}
void menu()
{
printf("**************************\n");
printf("***** 1.play 2.exit *****\n");
printf("**************************\n");
printf("输入1开始游戏 输入2退出游戏:\n");
}
void game()
{
char Board[ROW][COL] = { 0 };
ResetBoard(Board, ROW, COL);
while (1)
{
int back = 0;
Mine(Board, ROW, COL);
printf("请输入坐标:\n");
Play(Board, ROW, COL);
PlayBoard(Board, ROW, COL);
back = Play(Board, ROW, COL);
if (back == 0)
{
printf("BOOOOOOOM!!!\n");
break;
}
if (back == 1)
{
printf("获胜!\n");
break;
}
}
}
int main()//自建扫雷游戏
{
int input = 1; //修改
srand((unsigned int)time(NULL));//这个用的是 stdlib.h,而不是string.h
do
{
menu();
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 2:
input = 0; //修改
printf("退出游戏!\n");
break;
default:
input = 1; //修改
printf("输入错误,请重新输入!\n");
break;
}
} while (input);
}