js实现扫雷小游戏 - 青蓝鱼的博客-没有bug的代码是不完美的
侧边栏壁纸
  • 累计撰写 27 篇文章
  • 累计收到 16 条评论

js实现扫雷小游戏

admin
2022-09-26 / 3 评论 / 61 阅读 / 正在检测是否收录...

思路流程

  1. 写出基本的布局
  2. 利用js生成扫雷的table表格
  3. 利用随机数来做地雷在表格中的索引
  4. 初始化table表格
  5. 根据地雷的坐标生成地雷周围的数字
  6. 点击事件分成鼠标左键点击和右键点击
  7. 左键点击情况下又分为点到的是地雷和非地雷两种情况
  8. 点到的是地雷情况下,则将全部地雷显示,其他样式不变,并且不能再进行任意表格内的点击事件(左键右键都不行)
  9. 点到的是非地雷情况下又分为点击的数字是0和非0两种情况
  10. 如果是非0,则只需要显示其数字
  11. 如果是0,利用递归思想,遍历周围的表格,若为0则继续递归显示0,直到遇到非0停止
  12. 接上面的6,若进行右键点击,则显示小红旗,并且剩余地雷数-1
  13. 当剩余雷数为0时,判断小红旗底下是否全为地雷,若全是地雷则成功扫雷,否则扫雷失败
  14. 为按钮添加功能,分别为9乘以9->10个雷、16乘以16->40个地雷、28乘以28、99个地雷,以及重新开始按钮

生成游戏棋盘

  • 利用双层for循环创建设定的棋盘大小
  • 为每个单元格的dom元素创建一个属性,该属性用于保存单元格的所有信息,如x,y坐标,value,是否为雷等

随机生成炸弹

  • 利用随机数,随机生成炸弹x,y坐标,并将符合该坐标信息的单元格的属性更改为雷
  • 炸弹是在用户第一次点击的时候生成,防止用户第一次点击到炸弹
  • 将生成的每个炸弹信息都保存到一个this变量中,方便后续使用
  • 遍历每个炸弹周围的非炸弹方格,每遍历一次value值+1

鼠标左键点击

  • 点击的时候需要考虑该单元格是否有被标记小旗子(isFlag属性),如果有则无法点击
  • 判断是雷还是数字,雷的话则游戏结束,数字则继续判断是否等于0,等于0则使用递归显示空白区域
  • 每次打开一个单元格,需要更改该单元格的isOpen属性,表示单元格被打开

鼠标右键点击

  • 点击时需要考虑该单元格的isOpen属性是否被打开,打开的话则无法点击
  • 当该单元格没有标记旗帜时标记,如果有标记旗帜则取消标记
  • 每标记一个方格,剩余炸弹数量-1,取消标记则+1

游戏结束

  • 当左键点击到炸弹的时候游戏结束。失败
  • 剩余炸弹数量为0时。判断旗帜标记是否正确,正确游戏胜利,标记有误则失败

html代码

css代码

js代码

扫雷源码

本文共 1821 个字数,平均阅读时长 ≈ 5分钟
0

打赏

评论 (3)

取消
  1. 头像
    1
    湖北省 Windows 10 · QQ Browser
    沙发

    1

    回复 删除 垃圾
  2. 头像
    owq
    湖北省 Windows 10 · Google Chrome
    板凳


    这篇文章肯定会火,作者666大顺

    回复 删除 垃圾
  3. 头像
    asds
    湖北省 Windows 10 · Google Chrome
    地毯
    回复 删除 垃圾