基于Qt的扫雷游戏(c++)

2 篇文章 0 订阅

资源链接

游戏名称:minessweeper

利用qt实现可视化。

本程序灵感来源于windows系统经典扫雷游戏,力求还原游戏体验。但因本人编程水平有限,仍有不足之处。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2ZiCwPm9-1627265532774)(file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg)]

游戏区包括雷区地雷计数器(位于左上角,记录剩余地雷数)和计时器(位于右上角,记录游戏时间),确定大小的矩形雷区中随机布置一定数量的地雷(初级为99个方块10个雷,中级为1616个方块40个雷,高级为16*30个方块99个雷,自定义级别可以自己设定雷区大小和雷数),玩家需要尽快找出雷区中的所有不是地雷的方块,而不许踩到地雷。游戏设定默认为初级。

游戏的基本操作包括左键单击右键单击左键双击三种。其中左键用于打开安全的格子,推进游戏进度;右键用于标记地雷,以辅助判断,或为接下来的双击做准备;双击在一个数字周围的地雷标记完时,相当于对数字周围未打开的方块均进行一次左键单击操作:

左键单击:在判断出不是雷的方块上按下左键,可以打开该方块。如果方块上出现数字,则该数字表示其周围3×3区域中的地雷数(一般为8个格子,对于边块为5个格子,对于角块为3个格子。所以扫雷中最大的数字为8);如果方块上为空(相当于0),则可以递归地打开与空相邻的方块;如果不幸触雷,则游戏结束。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Te7KevYq-1627265532776)(file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg)]

右键单击:在判断为地雷的方块上按下右键,可以标记地雷(显示为小红旗)。重复一次操作用问号标记不确定的格子,重复两次操作来取消标雷。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7iGxwllW-1627265532778)(file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image006.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PQcEZp6n-1627265532781)(file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image008.jpg)]

左键双击:当双击位置周围已标记雷数等于该位置数字时操作有效,相当于对该数字周围未打开的方块均进行一次左键单击操作。地雷未标记完全时使用双击无效。若数字周围有标错的地雷,则游戏结束,标错的地雷上会显示一个“ ×”

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3WMY5CrH-1627265532784)(file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image010.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fOZBvpF4-1627265532785)(file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image012.jpg)]

**游戏成功:**当把所有的雷找出并标上旗帜,且没有标错的时候游戏结束,计时暂停,[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m892UVcc-1627265532786)(file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image013.gif)]
显示为[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aPhPYh1m-1627265532787)(file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image014.gif)]。

游戏开发过程:

首先实现了埋雷,初始化每个格子的数字,并初始化了页面。

然后实现了左键单击展开格子和开始计时,以及将不同数字显示为不同的颜色,以及点击雷游戏结束的功能;

之后又实现了右键插下旗子和问号的功能,以及插一个旗子,左上角数字减1的效果。

然后实现了判断游戏是否成功的功能。(但有不足之处在于,只能在所有雷都正确标出并且所有格子均翻出后才能确认成功)

最后实现了左键双击的功能。

不足之处:只有在所有的雷都用旗子标出来并且没有错误判断的时候,才判断成功。但实际上,在原版软件中,只需要将雷之外的格子都找出来,至于雷的格子是否标记并无要求。

并且游戏结束时,图标切换会有些迟缓,原因在于每秒钟判断一次,而不是游戏结束的同时就转换图标。有待改进。

切换会有些迟缓,原因在于每秒钟判断一次,而不是游戏结束的同时就转换图标。有待改进。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jinniulema

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值