数组与函数的实践之扫雷游戏

1.前言

想信很多铁子都玩过扫雷游戏吧,但肯定也有些铁子没玩过,所以我先给大家简单的介绍一下扫雷游戏的规则。简而言之就是在最短的时间内根据点击格子出现的数字(出现的数字代表这个数字周围雷的个数)找出所有非雷格子,同时避免踩雷,踩到一个雷即全盘皆输。那么用C语言代码怎么来实现这个扫雷游戏呢?那就请保持好奇,跟我一起往下看:

2.扫雷游戏的实现

(1)游戏设计

通过菜单可以实现选择继续游戏或结束游戏,设置一个9*9的棋盘,随机布置十个雷,可以进行排查雷如果点击的不是雷则显示这个数字周围雷的个数,如果是雷则游戏结束。如果将除了十个雷以外的非雷找出来,则获胜。

(2)搭建游戏框架

首先你应该在编译器上创建两个.c源文件(一个用来写游戏的主要框架以及所使用的函数,另一个则用来放函数的代码),接着创建一个.h头文件,用来定义变量和函数,方便调用。

如图,你可以用一个do...while循环,和switch语句来搭建一个框架,如果一把玩完还想玩就可以通过选择继续下一把,如果不想玩可以直接退出。

(3)初始化棋盘

我们设置两个棋盘,这两个棋盘对应数组,一个mine数组用来存放布置好雷的信息,一个show数组用来存放排查出雷的信息。将mine数组全部初始化为‘0’,方便后续布置雷,将show数组全部初始化为为‘*’ ,在排雷时可以区别已经排过的位置和未排过的。如:

(4)布置雷

在mine数组中初始化界面全部为‘0’,随机的布置十个雷,如果该位置没有雷就将‘0’改为‘1’,直到布置完设定的雷的个数。

布置完成后的盘面:

(5)排雷

点击盘面,如果该位置不是雷,则会出现一个数字,这个数字就是该位置周围雷的个数,根据数字进行推理判断,从而进行排雷。

但是除此之外我们还要避免一种特殊的情况,如下图:

在图示位置,当我们排查该位置时,就会访问周围一圈的八个位置,但已经超出盘面的范围就会发生越界,因此我们因该在棋盘周围在加上一圈,即将数组创建成11*11。

这里就体现出用‘0‘初始化棋盘,并用’1‘代表雷的好处。可以更快,更方便统计雷的个数,只需要将它们加起来即可。当然这不是唯一做法,你可以用其它的字符来代表雷,只是处理起来稍微复杂一点。

统计雷的个数:

排雷:

(6)其它注意点

在定义变量时,不要直接赋值,可以在头文件中进行定义,如:

这样做可以方便修改,在这我们是在9*9的棋盘上排10个雷,后面如果我们想加大难度或者修改成我们想要的棋盘和雷的数量,就可以在此处直接进行修改即可。

还需要注意的就是,在函数的使用上,形参和实参等关于数组和函数需要注意的问题,在使用时一定要小心,另外在设计时,我们可以按照上面的步骤一步一步进行,每一步写完,先运行一下,检查如果没有任何问题在进行后面的步骤,这样可以提高效率,避免一些不要的问题!!!

(7)游戏代码

game.h:

game.c:

test.c:

3.总结

以上就是我对扫雷游戏的看法与见解,希望对大家有帮助。如有不足还请指出,我会努力改正。想玩自己写的扫雷游戏的铁铁们还在等什么,抓紧搞起来!最后祝大家新年快乐,在新的一年里健康快乐、万事如意!好运多,喜事多,开心多!!!路过的留下你的小红心吧!

                谢谢观看!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值