C语言扫雷游戏的实现

如图就是扫雷游戏的初始界面,是一个9×9的方格,所以如果我们想要实现扫雷游戏就要打印出9×9的棋盘。但棋盘应该有两个,一个是我们看到的什么都没有的棋盘,一个是有雷的棋盘。根据棋盘的样子我们可以想到由二维数组来实现棋盘。当我们选择了一个地方后,会显示出附近8个位置雷的数量,但当我们选择到了边上时,就会超出我们所创建的二维数组的界限。所以我们可以创建一个11×11的数组来避免超出界限。

我们的扫雷游戏可大致分为四步1.创建两个棋盘2.随机放置雷的位置3.输入坐标,判断是否踩雷4.显示出附近雷的数量。

1.创建棋盘:

首先要创建两个二维数组,一个show数组(玩家看到的),一个是mine数组(存放雷的)。我们想要能显示出附近雷的数量,首先想把数字1作为雷,但若那个位置只有一个一时,雷和雷的数量就会冲突,不知道哪个是雷还是雷的数量。所以可以用字符‘1’来代表雷,数字来代表雷的数量。

首先打印游戏菜单:让用户可以选择是否进行游戏。并通过switch语句实现用户的选择。然后在用

户选择开始游戏后。创建game()函数来实现游戏的功能。

用户选择开始游戏后,我们就要根据上面红字部分来设计游戏,首先要先创建11乘11的数组,再把数组中放入雷。但我们要让用户看到的是9乘9的界面,所以只需要打印9乘9的就可以了。因此我们可以用创建Intiboard()函数来初始化棋盘,再创建print()函数来打印出期盘,看我们的初始化。

打印出来的棋盘就是图中的样子,但我们在排雷时要输入坐标,就是图中这样时坐标很难找,因此我们可以在每行每列的开头标上数字。代码如图。

2.随机放置雷的位置

当我们初始化后,可以将雷存入mine数组中。(注意我创建的mine数组是存放雷的数组,show,数组是用户看到的*组成的图案)我们创建函数setmine()来放置雷到mine数组中。然后用我们创建的

print函数打印出mine棋盘。因为要设置十个雷,所以我们要用循环,来布置雷,但因为rand生成的数是随机数,所以把rand()%9这样就会生成0到8的随机数,加上1就会生成1到9的随机数。再用x和y来把雷存入mine数组中。

3.输入坐标,排雷

  我们可以创建一个getmine()函数来让用户猜雷的位置。如图。当输入1到9的数时,符合坐标就进行判断是否踩雷。另外此处设置变量win是因为这样可以在猜完全部空格时会自动跳出循环。并打印出成功。要想打印出附近八个有几个雷,并显示在show数组上,我们就不能值给getmine函数传mine数组也应该传show数组。

改动后如下图。

   就可以在正确输入坐标后在进行判断。

4.判断雷的数量

在编写判断程序之前,首先要了解一点。要想把字符转化为数字,就可以用该字符减去字符0来得出数字。

如:'0'-'0'=0     '3'-'0'=3所以我们可以让我们输入的坐标附近八格的字符全部减去‘0’并用一个变量来接受这个值,再把这个这个值通过上面的公式又转化成字符在show数组中。在通过我们创建的print函数打印出来。然后再创建findmine函数来计算雷的数量。


最后在将各个函数嵌套。Project-游戏-10-29/Project-游戏-10-29 · 苟国航/苟国航 - 码云 - 开源中国 (gitee.com)

相关代码在上面看。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值