扫雷小游戏的简单实现

一、设计思路

        首先需要一个进入游戏的菜单,可以选择进入游戏或退出游戏。

        然后进入游戏后,映入玩家眼帘的游戏界面,由于技术手段有限,选择打印出二维数组,并且二维数组的字符全部设置为“ * ”号。

        而游戏界面的背后需要有地雷埋入这9x9的方格中,我们选择另外设立一个二维数组,避免数据存储在同一个数组中,使得游戏界面一开始就将地雷位置显示出来。然后地雷的摆放需要随机,这里就涉及到随机函数。

        然后就是扫雷玩法的根基,也就是显示周围八格的地雷的数量,我们选择在地雷存储的格子中全部放入字符‘0’,然后将地雷设置为字符‘1’,那么统计时,只需要统计周围八格字符‘1’的数量,然后替换游戏界面数组中的‘ * ’即可。由于统计时会遇到周围并没有八格的格子,为了避免非法统计,我们将数组增加为11x11的数组,即可避免该问题。

二、代码层面的实现

        作者只提供思路,具体敲代码的环节就交给读者自己去实践啦~

        首先是菜单,我们选择直接用printf函数打印,然后再用scanf函数收集玩家的选择,再使用分支语句,进入游戏或退出或重新输入。而游戏需要拥有重复游玩的特性,因此在分支语句外套上一个循环语句,条件是如果玩家输入非零,那么循环,而输入0也就是退出游戏时,就退出游戏。

        当代码走到进入游戏这一环节时,为避免程序过于冗杂,我们可以选择将游戏部分另外设置成一个函数,主函数直接调用即可。前面提到,我们需要创建两个二维数组,然后将内部数据分别初始化为字符‘  *  ’,与字符0,那么我们就需要写出一个初始化数组的函数。该函数可以通过两重for循环来实现,然后直接调用该函数对两个数组进行初始化。

        接下来就是埋雷,由于涉及到随机数,我们选择time函数初始化rand函数的种子,从而产生随机数,再将随机数对9取余加1,从而产生地雷的横纵坐标,从而使用字符'1'替换坐标中的字符'0'。而替换的过程可以使用一层while函数实现。

        随后就是统计地雷的函数,笔者曾尝试使用两层for循环去统计,但是报错了,所以选择暴力的直接输入地雷周围八格字符的坐标,而字符‘1’转数字1只需要减去一个‘0’即可。同样的,数字转变为字符只需要加上字符‘0’即可,然后替换掉游戏界面的‘ * ’,就大功告成了。

        最后我们再设置一个获胜条件,比如说全部81-10=71个格子被选完,就算胜利。

        而玩家与程序的互动,目前还做不到直接点击就能完成互动的地步,只能让玩家手动输入要查询的格子的坐标进行互动,多少有些麻烦了。加上不能一下点击然后显示一大片没有地雷的地区,这也让玩家输入比较麻烦。最后就是游戏界面,让人看的有些眼花。

        不过自己写出来的程序,自己还是打通关试试。

        嘿嘿,通关咯,写出该程序还是有一点难度的,笔者测试出了无数bug,然后慢慢修改完成了这个简易的小游戏。所以感兴趣的小伙伴,并且尝试无果以后,欢迎来找我要代码呀~ 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值