功能简介
科研迷宫是一个本地 Canvas 实验,它生成一个新的 21 × 21 迷宫,接受键盘或页面内方向控制,绘制玩家轨迹,计时运行,并在当前浏览器中保存最好的十个结果。
本地实验
迷宫、移动、计时器和排行榜在浏览器中运行。分数本地存储,从不提交到在线排行榜。
开始之前
- 在桌面端,使用方向键之前请先点击玩家名称输入框之外的区域。
- 在触摸设备上,使用棋盘下方的四个大方向按钮。
- 如果希望名称与结果一起保存,请在完成之前输入最多 32 个字符的玩家名称。
- 新的随机迷宫可能比上一个更简单或更难;记录不按迷宫难度归一化。
快速流程
- 在 Player(玩家)中输入名称。
- 选择 New Game(新游戏)以生成新迷宫并重置当前计时器、步数、轨迹和胜利消息。
- 使用键盘方向键或 ▲、▼、◀ 和 ▶ 控件移动。
- 沿着开放的白色单元格从左上角起点走到右边缘出口。出口在素材加载时使用汉堡图像,否则使用绿色回退。
- 完成后,在胜利消息和 Leaderboard(排行榜)中查看用时和步数。
- 选择 New Game 以尝试另一个程序化生成的棋盘。
控件与输出
| 控件或输出 | 当前行为 |
|---|---|
| Player | 设置与完成运行一起保存的名称;空名称变为 Player。 |
| New Game | 生成新的 21 × 21 迷宫并重置当前运行。 |
| 方向键 | 当焦点不在输入框、按钮、选择框或可编辑元素中时,尝试移动一格。 |
| 方向按钮 | 为鼠标和触摸输入提供相同的单格移动。 |
| Steps | 仅计成功移动;撞墙的尝试不增加计数。 |
| Trail | 标记之前占据的单元格,最多保留 500 条轨迹记录。 |
| 胜利消息 | 报告名称、用时秒数和成功移动次数。 |
| Leaderboard | 显示最多 10 个本地结果,首先按时间排序,然后按步数排序。 |
工作原理
每次新游戏在 21 × 21 网格中填充墙壁,并使用随机化递归回溯算法从网格位置 (1, 1) 雕刻连通路径。出口在右边缘打开并连接到雕刻的迷宫。
计时器在第一次方向尝试时启动,包括被墙阻挡的尝试。只有成功移动更新 Steps 和轨迹。到达出口结束运行,将用时四舍五入到两位小数,并将结果插入排序后的本地前十名。
数据、隐私与外部服务
- 排行榜条目存储在浏览器的
localStorage中,键名为mazeRankings。 - 不上传任何名称、分数、移动路径或设备数据。
- 清除此站点的浏览器存储会移除排行榜。
- 游戏从本网站加载爱因斯坦玩家和汉堡出口图像;当这些素材加载失败时使用简单的绘制回退。
局限性
- 移动基于网格。应用不使用设备倾斜、加速度计输入、连续弹珠物理或多人联网。
- 本地分数特定于浏览器配置文件和设备;它们不会跨浏览器同步。
- 随机迷宫的路线长度和难度各不相同,因此排行榜时间是非正式的,而非直接受控的实验对比。
- Canvas 提供简洁的无障碍标签,但不会将每堵墙和路径公开为可导航的屏幕阅读器元素。
- 没有应用内控件来清除所有已保存排名;如有需要,请清除站点的浏览器存储。
排障
| 问题 | 应检查什么 |
|---|---|
| 方向键无法移动 | 将焦点移出 Player 字段或按钮后重试;在移动设备上使用方向控件。 |
| 方向键按下不增加 Steps | 尝试的单元格是墙;仅有效移动计入。 |
| 计时器在第一次有效移动前启动 | 计时从第一次方向尝试开始,即使该尝试被阻挡。 |
| 出口图像缺失 | 使用绿色出口回退;游戏玩法不变。 |
| 完成的分数未出现 | 浏览器存储可能被阻止或已满,或结果不在最快前十名之内。 |
| 想要移除排名 | 在浏览器设置中清除此来源的站点数据。 |
