人人都能写代码——扫雷

对于此游戏实现进行分析,建议三个文件进行编写,分别以text.c为主体进行运行,game.h为主体内函数的声明,game.c为函数的实现(此方法方便查看内容,以及实现程序分工)

1.进入游戏

首先每个游戏的进入都是需要一个进入画面的,这里我用menu()函数来实现

接下来需要的是输入数字并进行判断是否进行游戏,这里需要使用分支语句switch()但当玩完后又想再玩一次时,可以使用do while循环,这样一个简单的进入界面就完成了

2.游戏界面

首先应该想一下如何打印出一个扫雷的游戏初始界面,首先需要确定行与列,如果说单纯在主体内部进行定义,会发现有局限性,若想修改行与列比较麻烦,所以这边定义一个行与列,至于ROWS后面会讲到

观察一下,发现其样式可以使用二维数组实现,但是这如何判断雷的位置呢? 

2.1如何判断雷?

试想一下建立两个完全一样的二维数组,其中一个里放雷,一个用于排查,这样只需判断两个数组相同位置处值的关系,所以创建show与mine的二维数组

2.2初始化棋盘

创建后肯定需要打印出二维数组,这里需要我们初始化一下数组mine(雷)与show里的值,这里就将show里值初始化为‘*’,mine内初始化为‘0’

所以创建函数my_board初始化棋盘

这里可以进行整合,用set来接收初始化值

 

2.3打印棋盘

初始化结束后,则就需要打印出棋盘,创建一个打印棋盘的函数displayboard

这样游戏的界面就完成了,运行结果如下

3.开始游戏

既然已经打印,那么就可以开始游戏啦,那么首先就应该让玩家输入坐标把,输入完判断是否是雷,是雷怎么样,不是雷又怎么样。

3.1放置雷

雷肯定是此游戏的关键啦,不然为啥叫扫雷呢?哈,那么接下来就要安放雷了,创建函数setmine

雷肯定是要随机放吧,所以需要rand()的参入,而这个范围呢?肯定要在row与col之内吧,所以写成rand()%row+1

尽然有rand的出现必然伴随着主体中有srand存在,与时间戳的存在

利用二维数组交换将数组内为0处替换为1,重复循环10次,当count为0时,跳出循环

注:这里的count与上文一样,方便修改雷的个数

3.2查找雷

放置好雷后肯定需要查找雷吧,这里又需要进行创建函数findmine

3.2.1输入坐标

坐标在此处是否越界需要考虑,所以写一个if语句判断一下,输入是否越界

满足则进行下一步,不满足则提示一下

3.2.2判断是否为雷

首先需要明确对于输入坐标有几种可能

输入坐标为雷则游戏结束

输入坐标不为雷

首先明确,在输入坐标周围为哪些坐标(注意x为行,y为列)

以上就是一个9宫格,判断一下可以看出可以写成一个for循环的形式

这样count就应该是在show棋盘上显示的数,所以用二维数组替换

这里chount为整数型,进行转换为字符型

整体内容如下

判断赢

以上部分基本上将游戏内容写完,接下来最后就要判断输赢了,可以知道,棋盘总数为row*col

需要排查的次数为减去雷的数量,这样就可以得知循环的次数为row*col-easyset

所以写成如上所示

总结语

以上所有内容如有出错,希望读者大大能及时纠正,谢谢!

后续会推出更多有趣小程序,敬请期待

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值