哈喽哈喽,家人们好呀~
今天我分享的是使用C语言实现扫雷游戏!
下面我们一起来看看~
目录
接下来,创建一个属于我们的"SL.c"文件,来进行我们自定义函数的实现.
同名头文件"SL.h"进行自定义函数的声明和一些我们需要的变量.
※※首先
理清思路
接下来,创建一个属于我们的"SL.c"文件,来进行我们自定义函数的实现.
同名头文件"SL.h"进行自定义函数的声明和一些我们需要的变量.
头文件:
各个自定义函数的实现如下:
#include "SL.h"
void initboard(int r, int c, char board[rows][cols], char set)
{
int i = 0;
int j = 0;
for (i = 0; i < r; i++)
{
for (j = 0; j < c; j++)
{
board[i][j] = set;
}
}
}
void printboard(int r, int c, char board[rows][cols])
{
int i = 0;
int j = 0;
for (j = 0; j <= c; j++)
{
printf("%d ", j );
}
printf("\n");
for (i =1; i <=r; i++)
{
printf("%d ", i);
for (j = 1; j <= c; j++)
{
printf("%c ", board[i][j]);
}
printf("\n");
}
}
void putray(int r, int c, char mine[rows][cols])
{
int count = EASYCOUNT;
srand((unsigned int)time(NULL));
while (count)
{
int x = rand() % row + 1;
int y = rand() % col + 1;
if (mine[x][y] == '0')
{
mine[x][y] = '1';
count--;
}
}
}
int get_mine_count(char mine[rows][cols], 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');
}
//show是展示的 mine是隐藏着埋雷的
void findray(int r, int c, char mine[rows][cols], char show[rows][cols])
{
int i = 0;
int j = 0;
int win = 0;
while (win < r* c- EASYCOUNT)
{
printf("请输入你要选择的坐标:>\n");
scanf("%d %d", &i, &j);
if (i > 0 && i <= r && j > 0 && j <= c)
{
if (show[i][j] == '*')
{
if (mine[i][j] =='1')
{
printf("很遗憾,踩到了雷\n");
printboard(r, c, mine);
break;
}
else
{
int count = get_mine_count(mine,i,j);
show[i][j] = count + '0';
printboard(r,c,show);
win++;
}
}
else
{
printf("此坐标已被排查过\n");
}
}
else
{
printf("坐标非法,请重新输入");
}
if (win == r * c - EASYCOUNT)
{
printf("恭喜你,成功排雷!\n");
printboard(r, c, mine);
}
}
}
这次把我自己编写的主函数也分享给大家~
#include "SL.h"
void menu()
{
printf("*******请选择*******\n");
printf("*******1.开始游戏***\n");
printf("*******0.退出游戏***\n");
}
void game()
{
//定义两个数组
char mine[rows][cols] = { 0 };
char show[rows][cols] = { 0 };
//初始化两个数组
initboard(rows, cols, show, '*');
initboard(rows, cols, mine, '0');
putray(row, col, mine);//埋雷
printboard(row, col, show);
findray(row, col, mine, show);
}
int main()
{
int input = 0;
do
{
menu();
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("输入错误,请重新选择\n");
break;
}
} while (input);
return 0;
}
最终运行的结果就是这样啦!
在写的过程中遇到了很多困难和问题,但是结果还不错~大家也快去试试编程实现扫雷游戏吧~