一个使用纯HTML、CSS和JavaScript实现的经典扫雷游戏。
- 🎮 经典玩法:与Windows经典扫雷游戏相同的规则和体验
- 🎚️ 多级难度:提供初级(12x12)、中级(16x16)和高级(19x19)三种难度选择
- 🎯 第一次点击安全:首次点击永远不会触雷
- 🚩 标记功能:右键点击可标记可疑的地雷位置
- 🔢 数字提示:显示周围地雷数量的彩色数字
- 📱 响应式设计:适配不同屏幕尺寸,包括移动设备
克隆仓库:
git clone https://github.com/Forminio/minesweeper-game.git
游戏使用两个二维数组作为核心数据结构:
- mineBoard :记录每个格子是地雷('M')还是数字(0-8)
- showBoard :记录每个格子的显示状态('hidden'、'revealed'、'flag'、'mine')
关键实现点:
- 使用随机数生成地雷位置
- 确保首次点击位置及其周围8个格子不会有地雷
- 地雷放置完成后,计算每个非地雷格子周围的地雷数量
关键实现点:
- 使用递归算法自动展开空白区域
- 当点击到数字0(周围无雷)的格子时,自动展开周围的8个格子
- 递归继续展开,直到遇到数字格子为止
- 边界检查确保不会越界
关键实现点:
- 计算已揭示的格子数量
- 当已揭示格子数量等于总格子数减去地雷数时,判定为胜利
- 胜利时自动标记所有未标记的地雷
关键实现点:
- 使用CSS Grid布局实现游戏网格
- 动态调整网格大小以适应不同难度
- 为每个单元格添加点击和右键点击事件
- 根据单元格状态设置不同的样式和内容
关键实现点:
- 使用媒体查询适配不同屏幕尺寸
- 在小屏幕设备上调整按钮布局和单元格大小
- 确保游戏在移动设备上也能良好运行
关键实现点:
- 添加多种事件监听确保游戏在各种情况下都能正常运行
- 定期检查游戏状态,自动修复可能的问题
- 处理页面可见性变化、缓存加载等特殊情况
- 经典Windows风格UI :使用灰色背景、凸起和凹陷的边框,重现经典Windows扫雷游戏的视觉风格
- 彩色数字提示 :不同数字使用不同颜色,提高游戏可读性
- 游戏状态反馈 :通过模态窗口提供游戏结束反馈,显示游戏结果和用时
- 自适应布局 :游戏界面能够适应不同屏幕尺寸,在桌面和移动设备上都有良好体验