text.c
#define _CRT_SECURE_NO_WARNINGS 1
#include"game.h"
//游戏菜单
void mune()
{
printf(" 游戏要开始了,准备好了吗?\n");
printf(" 游戏说明: ①字符‘1’代表雷,‘0’代表无雷; ②输入排雷坐标后显示的数字是周围8个格子,雷的总数\n");
printf(" 按1->勇者准备进入 按2->太菜了不敢玩\n");
}
void game1()
{
//创建雷区
char mine1[a][b] = { '0' };
//创建可视雷区
char show1[a][b] = { '0' };
//初始化棋盘
initboard1(mine1,a , b, '0');
initboard1(show1, a, b, '*');
//打印棋盘
displayboard1(show1, A, B);
//布置雷
setmine1(mine1, A, B);
displayboard1(mine1, A, B);//开挂
//扫雷
findmine1(mine1, show1, A, B);
}
void game2()
{
//创建雷区
char mine2[c][d] = { '0' };
//创建可视雷区
char show2[c][d] = { '0' };
//初始化棋盘
initboard2(mine2, c, d, '0');
initboard2(show2, c, d, '*');
//打印棋盘
displayboard2(show2, C, D);
//布置雷
setmine2(mine2, C, D);
//displayboard2(mine2, C, D);//开挂
//扫雷
findmine2(mine2, show2, C, D);
}
void game3()
{
//创建雷区
char mine3[e][f] = { '0' };
//创建可视雷区
char show3[e][f] = { '0' };
//初始化棋盘
initboard3(mine3, e, f, '0');
initboard3(show3, e, f, '*');
//打印棋盘
displayboard3(show3, E, F);
//布置雷
setmine3(mine3, E, F);
//displayboard3(mine3, E, F);//开挂
//扫雷
findmine3(mine3, show3, E, F);
}
void game4()
{
//创建雷区
char mine4[g][h] = { '0' };
//创建可视雷区
char show4[g][h] = { '0' };
//初始化棋盘
initboard4(mine4, g, h, '0');
initboard4(show4, g, h, '*');
//打印棋盘
displayboard4(show4, G, H);
//布置雷
setmine4(mine4, G, H);
//displayboard4(mine4, G, H);//开挂
//扫雷
findmine4(mine4, show4, G, H);
}
//循环
void cyclic()
{
int input4 = 6;
do{
scanf("%d", &input4);
switch (input4)
{
case 1:
game1();
break;
case 2:
game2();
break;
case 3:
game3();
break;
case 4:
game4();
break;
default:
printf("看清楚了!输入1-4!哥们儿!请重新选择!\n");
input4 = 5;
break;
}
} while (input4);
}
//主函数
int main()
{
int input1 = 0;
int input2 = 0;
int input3 = 0;
int input6 = 1;
srand((unsigned int)time(NULL));
//菜单
mune();
scanf("%d", &input1);
if (input1 == 1)
{
printf(" 请选择你想挑战的难度->\n");
printf(" 1-我想养生 2-上点难度 3-我想好好玩 4-别选这个\n");
scanf("%d", &input2);
switch (input2)
{
case 1:
game1();
break;
case 2:
game2();
break;
case 3:
game3();
break;
case 4:
game4();
break;
default:
printf("看清楚了!输入1-4!哥们儿!请重新选择!\n");
cyclic();
break;
}
do
{
printf(" 是否还想玩一局?\n");
printf(" 1-来 2-不了\n");
scanf("%d", &input3);
if (input3 == 1)
{
int input5 = 0;
printf(" 请选择你想挑战的难度->\n");
printf(" 1-我想养生 2-上点难度 3-我想好好玩 4-别选这个\n");
scanf("%d", &input5);
switch (input5)
{
case 1:
game1();
break;
case 2:
game2();
break;
case 3:
game3();
break;
case 4:
game4();
break;
default:
printf("看清楚了!输入1-4!哥们儿!请重新选择!\n");
cyclic();
break;
}
}
else
{
input6--;
}
} while (input6);
return 0;
}
}
game.c
#define _CRT_SECURE_NO_WARNINGS 1
#include "game.h"
//棋盘1
//初始化---覆盖
void initboard1(char board[a][b], int rows, int cols, char set)
{
int i, j = 0;
for (i = 0; i < rows; i++)
{
for (j = 0; j < cols; j++)
{
board[i][j] = set;
}
}
}
//棋盘打印
void displayboard1(char board[a][b], int row, int col)
{
int i = 0;
int j = 0;
for (i = 0; i <= col; i++)
{
printf("%d ", i);
}
printf("\n");
for (i = 1; i <= row; i++)
{
printf("%d ", i);
for (j = 1; j <= col; j++)
{
printf("%c ", board[i][j]);
}
printf("\n");
}
}
//布置雷区
void setmine1(char board[a][b], int row, int col)
{
int count = AA;
while (count)
{
int x = rand() % row + 1;
int y = rand() % col + 1;
if (board[x][y] == '0')
{
board[x][y] = '1';
count--;
}
}
}
//扫雷
int getminecount1(char mine[a][b], int x, int y)
{
return mine[x - 1][y] + mine[x - 1][y - 1] + mine[x][y - 1] + mine[x + 1][y - 1] + mine[x + 1][y] + mine[x + 1][y + 1] + mine[x][y + 1] + mine[x - 1][y + 1] - 8 * '0';
}
void findmine1(char mine[a][b], char show[a][b], int row, int col)
{
int x = 0;
int y = 0;
while (1)
{
printf("请输入排查雷的坐标:》用空格隔开->");
scanf("%d%d", &x, &y);
if (x >= 1 && x <= row&&y >= 1 && y <= col)
{
if (mine[x][y] == '1')
{
printf("BOOM!!!!YOU DIE!!!\n");
displayboard1(mine, row, col);
break;
}
else
{
int count = getminecount1(mine, x, y);
show[x][y] = count + '0';
displayboard1(show, row, col);
printf("不错嘛!再来!/n");
}
}
else
{
printf("看清楚坐标,再输入!\n");
}
}
}
//棋盘2
//初始化---覆盖
void initboard2(char board[c][d], int rows, int cols, char set)
{
int i, j = 0;
for (i = 0; i < rows; i++)
{
for (j = 0; j < cols; j++)
{
board[i][j] = set;
}
}
}
//棋盘打印
void displayboard2(char board[c][d], int row, int col)
{
int i = 0;
int j = 0;
for (i = 0; i <= col; i++)
{
printf("%d ", i);
}
printf("\n");
for (i = 1; i <= row; i++)
{
printf("%d ", i);
for (j = 1; j <= col; j++)
{
printf("%c ", board[i][j]);
}
printf("\n");
}
}
//布置雷区
void setmine2(char board[c][d], int row, int col)
{
int count = CC;
while (count)
{
int x = rand() % row + 1;
int y = rand() % col + 1;
if (board[x][y] == '0')
{
board[x][y] = '1';
count--;
}
}
}
//扫雷
int getminecount2(char mine[c][d], int x, int y)
{
return mine[x - 1][y] + mine[x - 1][y - 1] + mine[x][y - 1] + mine[x + 1][y - 1] + mine[x + 1][y] + mine[x + 1][y + 1] + mine[x][y + 1] + mine[x - 1][y + 1] - 8 * '0';
}
void findmine2(char mine[c][d], char show[c][d], int row, int col)
{
int x = 0;
int y = 0;
while (1)
{
printf("请输入排查雷的坐标:》用空格隔开->");
scanf("%d%d", &x, &y);
if (x >= 1 && x <= row&&y >= 1 && y <= col)
{
if (mine[x][y] == '1')
{
printf("BOOM!!!!YOU DIE!!!\n");
displayboard2(mine, row, col);
break;
}
else
{
int count = getminecount2(mine, x, y);
show[x][y] = count + '0';
displayboard2(show, row, col);
printf("不错嘛!再来!/n");
}
}
else
{
printf("看清楚坐标,再输入!\n");
}
}
}
//棋盘3
//初始化---覆盖
void initboard3(char board[e][f], int rows, int cols, char set)
{
int i, j = 0;
for (i = 0; i < rows; i++)
{
for (j = 0; j < cols; j++)
{
board[i][j] = set;
}
}
}
//棋盘打印
void displayboard3(char board[e][f], int row, int col)
{
int i = 0;
int j = 0;
for (i = 0; i <= col; i++)
{
printf("%d ", i);
}
printf("\n");
for (i = 1; i <= row; i++)
{
printf("%d ", i);
for (j = 1; j <= col; j++)
{
printf("%c ", board[i][j]);
}
printf("\n");
}
}
//布置雷区
void setmine3(char board[e][f], int row, int col)
{
int count = EE;
while (count)
{
int x = rand() % row + 1;
int y = rand() % col + 1;
if (board[x][y] == '0')
{
board[x][y] = '1';
count--;
}
}
}
//扫雷
int getminecount3(char mine[e][f], int x, int y)
{
return mine[x - 1][y] + mine[x - 1][y - 1] + mine[x][y - 1] + mine[x + 1][y - 1] + mine[x + 1][y] + mine[x + 1][y + 1] + mine[x][y + 1] + mine[x - 1][y + 1] - 8 * '0';
}
void findmine3(char mine[e][f], char show[e][f], int row, int col)
{
int x = 0;
int y = 0;
while (1)
{
printf("请输入排查雷的坐标:》用空格隔开->");
scanf("%d%d", &x, &y);
if (x >= 1 && x <= row&&y >= 1 && y <= col)
{
if (mine[x][y] == '1')
{
printf("BOOM!!!!YOU DIE!!!\n");
displayboard3(mine, row, col);
break;
}
else
{
int count = getminecount3(mine, x, y);
show[x][y] = count + '0';
displayboard3(show, row, col);
printf("不错嘛!再来!/n");
}
}
else
{
printf("看清楚坐标,再输入!\n");
}
}
}
//棋盘4
//初始化---覆盖
void initboard4(char board[g][h], int rows, int cols, char set)
{
int i, j = 0;
for (i = 0; i < rows; i++)
{
for (j = 0; j < cols; j++)
{
board[i][j] = set;
}
}
}
//棋盘打印
void displayboard4(char board[g][h], int row, int col)
{
int i = 0;
int j = 0;
for (i = 0; i <= col; i++)
{
printf("%d ", i);
}
printf("\n");
for (i = 1; i <= row; i++)
{
printf("%d ", i);
for (j = 1; j <= col; j++)
{
printf("%c ", board[i][j]);
}
printf("\n");
}
}
//布置雷区
void setmine4(char board[g][h], int row, int col)
{
int count = GG;
while (count)
{
int x = rand() % row + 1;
int y = rand() % col + 1;
if (board[x][y] == '0')
{
board[x][y] = '1';
count--;
}
}
}
//扫雷
int getminecount4(char mine[g][h], int x, int y)
{
return mine[x - 1][y] + mine[x - 1][y - 1] + mine[x][y - 1] + mine[x + 1][y - 1] + mine[x + 1][y] + mine[x + 1][y + 1] + mine[x][y + 1] + mine[x - 1][y + 1] - 8 * '0';
}
void findmine4(char mine[g][h], char show[g][h], int row, int col)
{
int x = 0;
int y = 0;
while (1)
{
printf("请输入排查雷的坐标:》用空格隔开->");
scanf("%d%d", &x, &y);
if (x >= 1 && x <= row&&y >= 1 && y <= col)
{
if (mine[x][y] == '1')
{
printf("BOOM!!!!YOU DIE!!!\n");
displayboard4(mine, row, col);
break;
}
else
{
int count = getminecount4(mine, x, y);
show[x][y] = count + '0';
displayboard4(show, row, col);
printf("不错嘛!再来!/n");
}
}
else
{
printf("看清楚坐标,再输入!\n");
}
}
}
game.h
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
//棋盘1
#define A 3
#define B 3
#define a 5
#define b 5
#define AA 2
//棋盘2
#define C 6
#define D 6
#define c 8
#define d 8
#define CC 10
//棋盘3
#define E 9
#define F 9
#define e 11
#define f 11
#define EE 15
//棋盘4
#define G 11
#define H 11
#define g 13
#define h 13
#define GG 100
//1
void initboard1(char board[a][b], int rows, int cols, char set);
void displayboard1(char board[a][b], int row, int col);
void setmine1(char board[a][b], int row, int col);
int getminecount1(char mine[a][b], int x, int y);
void findmine1(char mine[a][b], char show[a][b], int row, int col);
//2
void initboard2(char board[c][d], int rows, int cols, char set);
void displayboard2(char board[c][d], int row, int col);
void setmine2(char board[c][d], int row, int col);
int getminecount2(char mine[c][d], int x, int y);
void findmine2(char mine[c][d], char show[c][d], int row, int col);
//3
void initboard3(char board[e][f], int rows, int cols, char set);
void displayboard3(char board[e][f], int row, int col);
void setmine3(char board[e][f], int row, int col);
int getminecount3(char mine[e][f], int x, int y);
void findmine3(char mine[e][f], char show[e][f], int row, int col);
//4
void initboard4(char board[g][h], int rows, int cols, char set);
void displayboard4(char board[g][h], int row, int col);
void setmine4(char board[g][h], int row, int col);
int getminecount4(char mine[g][h], int x, int y);
void findmine4(char mine[g][h], char show[g][h], int row, int col);
给个支持吧~