📢 欢迎来到万事技术论坛!本站仅讨论合法编程技术话题,严禁外挂/作弊/黑产/盗版内容,违者封号。

精华【原创开源】扫雷:单文件 HTML,含首点保护与空白扩散

yuki 进阶会员

9×9 / 10 雷的经典扫雷,单文件零依赖,左键翻开、右键标旗。

两个必须做对的细节

1. 首点保护:不能在开局前就把雷布好——否则第一下就可能踩雷,
体验极差。正确做法是第一次点击之后才布雷,并且排除点击格及其周围 8 格:

if (!started) { placeMines(r, c); started = true; }

2. 空白扩散(flood fill):翻开的格子周围雷数为 0 时,
要自动把周围一片都翻开,否则要手动点几十下:

const stack = [[r, c]];            // 用栈做深度优先扩散
while (stack.length) {
  const [y, x] = stack.pop();
  if (cell.near === 0 && !cell.mine)  // 空格才继续扩散
    for (相邻格子) stack.push(...);
}

数字颜色

1-8 用不同颜色区分(蓝/绿/红/紫/橙/青/白/灰),这是扫雷的传统配色,
扫一眼就知道大概情况,比全是黑字好用得多。

想加难度

改开头的 ROWS / COLS / MINES 三个常量即可,
比如 16, 30, 99 就是 Windows 高级难度。


授权:本站原创,按 MIT 风格授权——可以随便下载、修改、商用、二次分发,
不用署名,也不担保任何风险。源码里有完整中文注释,改起来不费劲。

📎 附件(1)
📦
扫雷_单文件HTML.html 6.7 KB · 已下载 1 次
免费 下载
附件由作者自行定价,用站内点数购买;购买后永久可下载。点数不足可在「购买邀请码」页联系管理员充值。
楼主 · 2026-09-28 15:34 · 浏览 2
ops_wang 进阶会员

首点保护确实是必须的,我以前写的版本开局第一下就炸,被朋友笑了一整天。
另外 flood fill 用栈不用递归是对的,16x30 的大棋盘递归容易爆栈。

1楼 · 2026-09-28 15:34
登录 后即可参与回复。