Skip to content

Satar07/Minesweeper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

扫雷

code by Satar07

debug玩到不想玩了。。。

实现功能

Win10打开控制台应用的时候会自动进入快速编辑模式 导致鼠标不能点击

需要点开应用后右键应用左上角->属性->选项->快速编辑模式取消勾选->确定后重新进入游戏

  • 新游戏

    • 显示
      • <quit> 退出该游戏
        • 没有游玩直接退出
        • 有游玩询问是否保存后退出
      • <menu> 返回菜单
        • 没有游玩直接返回
        • 有游玩询问是否保存后返回
      • 剩余雷数 总雷数-标记个数
      • 实时时间 (s)
    • 交互
      • 左键单击
        • 很普通的翻开格子 1 2 3 4 5 6 7 8
      • 右键
        • 标记该格子
        • 再点一次就取消标记
      • 左键双击
        • 如果周围的标记的格子等于该格子提示数 则翻开周围没有被标记的所有格子
      • 连锁打开
        • 如果点到的是空白(也就是周围都没有雷)自动翻开周围的所有格子
    • 游戏结果
      • 您输了
        • 条件:点到格子 !!
        • 信息框提示
        • 耗时 s
      • 你赢了
        • 条件:剩下的没有翻开的格子数等于总雷数
        • 信息框提示
        • 耗时
        • 如果时间能进入排行榜 就要求留下姓名 并存储刷新排行榜
  • 排行榜

    • 如果没有该文件 则考虑创建文件(如果第一次没有游玩就打开就不存储了
    • 从文件中读取排行榜信息
等级 格子数 雷数
初级 9*9 10
中级 16*16 40
高级 30*16 99
自定义 [9,50]*[9,50] 对定义的格子数适宜即可
  • 难度选择

    • 自定义输入

      • 输入宽 高 雷数

        加入了不成熟的输入检查

      • 不加入排行榜

        其实这里特意只审核了雷数 就当作者通道了(((逃

  • 退出

    • 神秘的退出绘画(
  • 旧游戏

    • 从文件中读取游戏记录 恢复所有信息(包括自定义的类型)

框架

  • main 主程序 宏观调用游戏引擎 实现菜单
  • gamer 游戏引擎 处理各种游戏内的功能
  • timer 计时器组件 可用于多线程
  • baseheader 通用文件 不属于游戏实现的算法

问题

  1. 刷新时采用整个棋盘刷新 速度慢

    单独2个字符刷新会使前面的字符卡掉

    可以解决 ?把前面的字符也一起刷新了

    ----- 但是在i7-10700上顺滑无比 (果然是性能测试软件)

    解决方案printf()putchar() 加速 确实可以加速到只有高级难度才会有细微的刷新感觉

    v1.1还是没有实现单独刷新

下一步

  • 添加游戏内重玩功能 输了也会停留在游戏界面 //推后实现 属于逻辑链改善
  • 限制排行榜输入名字的长度 限制雷数输入一些奇怪的东西

版本

  • v1.0 2022.1.18

    • 构建了游戏主体
      • 左键点开格子
      • 右键标记
      • 左键双击快速打开
      • 返回菜单
      • 退出游戏
      • 计时器 -多线程实现
    • 菜单内容
      • 新游戏
      • 排行榜
      • 难度选择
      • 退出
  • v1.1

    • 游戏主题添加功能
      • 显示剩余雷数 (=实际雷数-标记的格子数)
      • 游戏时的菜单居中优化
    • 其他功能
      • 游戏状态二进制保存 防止改动和查看
      • 添加自定义雷数功能 自适应窗口大小