扫雷游戏分享

本文详细描述了如何将扫雷游戏的各个功能模块,如菜单选择、难度设置、雷布置、雷数统计和输赢判定,分别封装在不同的函数中。作者使用了二维数组、while循环和goto语句,并讨论了游戏运行中的问题和后续优化方向。
摘要由CSDN通过智能技术生成
分析思路

将扫雷分在不同函数中,那么创建一个头文件,一个源函数(游戏函数)用于放置我们所需的函数,另一个源函数放置我们游戏主体。

游戏主体包括菜单函数和游戏函数。

游戏主体

在这里我使用while和goto语句,实际上可以使用do while也可以。

分成三种情况:输入1;输入0;输入其他数字。当输入1游戏就开始;输入0游戏结束;输入其他数字那么就提醒玩家重新输入。使用goto语句,当输错两次,将重新打印菜单。

   菜单函数

菜单函数只有打印,没有返回值那么用void

   游戏函数 

游戏中包括选择难度,布置雷,统计雷数,判断输赢。

选择难度

使用degree函数,当玩家选完应该返回游戏函数中,所以返回a值来判断。在这里我只设计了一个难度,如果输入超过3的数,程序会停止(这里设计和前面一样,以后可以不断丰富)

布置雷

最简单的难度是9*9的格子,那么我们可以用二维数组。先假定雷为1,空白为0。那么就会有一个问题:是1就游戏结束了,那么玩家会不懂这个显示出来的1是已经踩雷还是表示周围有一个雷。

这样非常糟糕,所以我们使用两个二维数组,一个用于放雷(mine),一个用于显示雷(show)

还有一个问题,当雷出现在数组边缘时,没有办法计算雷数,因为会越界查找。

所以我们将数组从9*9改为11*11,这样可以只使用中间9*9的框,解决了越界访问的问题。

初始化棋盘(board)

使用函数(mines)

我们是随机布置雷,这里必须写while(m)不是while(m--)原因是雷有可能放置在同一处,通过if语句后,雷总数变少了。

所以使用rand和time函数,记得声明和头文件

统计雷数

这里将用户输入的坐标发给get函数查找雷数,下面代码只是将(i,j)坐标旁八个坐标的雷数进行统计并返回show函数,等待打印。

打印

判断输赢

排查成功,打印周围雷数(show),排查失败打印雷的位置(mine)

最后做好头文件

游戏运行问题

难度只有简单,这个需要后面继续优化

一共要输入71次,非常麻烦,不能像正常扫雷一样揭开附近不是雷的区域。

  • 15
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值