Skip to content

takiee/minesweeper

Repository files navigation

minesweeper

minesweeper game

功能介绍

扫雷游戏以满足用户娱乐、益智为宗旨,不断创新以适应用户要求,本次课程设计以用户需求为导向,主要完成以下功能: ① 游戏的初始化
② 菜单栏功能的实现
③ 游戏难度选择
④ 雷区的随机布置
⑤ 游戏的测试:

  • 左击格子:打开该格子,如果该格子雷数为0则继续打开
  • 右击格子:标记该格子/取消该格子的标记
  • 双击格子:对已打开且格子上数字等于周围标记数的格子双击,打开该格子周围所有未打开格子

整体框架

image

代码架构

使用QT和C++设计

image

算法分析

洗牌算法

  1. 产生行数和列数的随机数
    缺陷:可能会出现重复埋雷,使得布雷数量与要求不符
    改进:在埋雷的时候加入判断,避免重复埋雷
    缺陷:在雷区数量很大时会造成死循环,导致程序运行很慢
  2. 先在雷区中顺序埋雷,然后再将其打乱
    缺陷:埋雷的随机程度对交换次数依赖性很大,交换次数少了雷会按照以开始的顺序排列,并且每个格子被埋雷的概率不等。
  3. 洗牌算法:
    先顺序埋雷,再将最后一个格子与前面NM-1个格子中任意一个格子交换,将倒数第二个格子与NM-2个格子中任意一个格子交换
    洗牌算法优点:
    a. 避免了重复
    b. 通过数学推导,每个格子埋雷的可能性相同

讲解视频

https://drive.google.com/file/d/1-mF3zD4i_cqmq1p857rPZxW1VXUnenv4/view?usp=sharing

游戏视频

https://drive.google.com/file/d/1OIriY-rnK8RT-RDGrb676fM13FBVXmeS/view?usp=sharing

About

minesweeper game

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published