C语言如何实现扫雷游戏

扫雷游戏,想必大家都玩过了,那如何用c语言实现一个扫雷游戏呢

首先我们要知道扫雷游戏的机制

如图所示,这里有10个雷,点击一个方块,就会显示周围有几个雷

像图中的2,就是显示这个方块周围有两个雷。

然后就是雷是随机分布的,那么我们就要用到 rand 随机函数,但是 rand 是伪随机,所以我们要配和 srand 实现跟随时间产生随机数。

基础原理已经理解,接下来就开始布局把

为了方便起见,建议建立一个头文件,和两个源文件。

test.c负责运行;game.c负责函数的表达;game.c负责函数的声明

那么我们首先在test.c里构建基础的游戏交互界面把

为了运行代码的简洁,我们可以建立一个游戏交互界面的函数,运行如下

好,简单的交换界面我们已经建立完毕,开始设计游戏内容了。

首先,要实现的就是在输入1开始游戏后会弹出一个棋盘,输入0就会弹出结束游戏,已经输入其他就会显示输入无效,这里用到switch()函数

接下来就是设计棋盘了,在case1加入一个game()函数,函数内容就是打印棋盘

那如何打印棋盘呢,大家看之前的扫雷图不知道有没有联想到二维数组呢,我们要用二维数组打印棋盘,

二维数组定义好了,为了棋盘大小可以更方便的修改,决定使用#define,

之前建立的game.h 就派上用场了。

可以用#define 声明字符,将想要的值设置好,ROW表示行,COL表示列

ps:调用本地头文件要用""

将棋盘设计好后,就要打印棋盘和布置雷了

我们先声明一个打印棋盘的函数

然后设计下外观,使棋盘显示横坐标

再之后就是显示纵坐标的同时,打印棋盘内容

接下来就是布置雷了

布置雷,这里用到rand伪随机,为了实现真随机,我srand随时间变换产生新的随机数,然后取它的个位数,为了避免0的存在所以+1。

EASY_COUNT表示游戏难度,有多少个雷

这里我们布置了10个雷

接下来是排查雷,为了实现排查一个雷后显示周围有多少雷的效果,我们要用到一个函数

最好就是排查雷的代码

void FineMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col)
{
	int x, y;
	int win = 0;
	while (win < row * col - EASY_COUNT)
	{
		printf("请输入排查雷坐标:");
		scanf("%d %d",&x,&y);
		if (x >= 1 && x <= row && y >= 1 && y <= col)
		{
			if (mine[x][y] == '1')
			{
				printf("你被炸死了!!! \n ");
				DisplayBroad(mine, ROW, COL);
				break;
			}
			else
			{
				int count = GetMineCount(mine, x, y);
				show[x][y] = count + '0';
				DisplayBroad(show, ROW, COL);
				win++;
			}
		}
		else
		{
			printf("非法输入,请重新输入\n");
		}
	}
	if (win == row * col - EASY_COUNT)
	{
		printf("排雷成功!!!");
		DisplayBroad(mine, ROW, COL);
	}
}

运行结果,完事

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值