迷宫是一种古老而迷人的益智游戏，它的历史可以追溯到几千年前。最早的迷宫可能起源于古埃及和古希腊，用于宗教仪式和建筑设计。如今，迷宫已经发展成为一种广受欢迎的解谜游戏形式。

迷宫的本质是在有限空间内，**通过复杂的路径设计，创造出一个需要玩家从入口到达出口的挑战**。本页面的在线迷宫提供了多种迷宫形状和生成算法，让玩家可以体验不同风格的迷宫解谜。

## 在线迷宫游戏的玩法

### 开始游戏

在开始探索迷宫之前，可以根据喜好调整迷宫的各项设置（后面会讲各种设置的含义），然后点击"**生成迷宫**"按钮创建一个全新的迷宫。当迷宫生成完毕后，点击"**开始游戏**"按钮即可进入游戏模式。

在迷宫界面中，有一个绿色的点代表着迷宫的入口，**迷宫的出口**则用醒目的红色点标记。然后可以通过键盘来寻找出口，也可以通过移动鼠标来寻找迷宫出口。系统会**自动为走过的路径添加标记**，这样可以避免重复探索相同的路径。

当成功到达终点时，系统会显示本次游戏数据，包括完成时间和路径效率等信息，你可以评估自己的表现并尝试突破记录。

### 移动方式

在迷宫中移动有两种简单的方式：**用键盘或者用鼠标**。如果你习惯用键盘，可以使用方向键来控制上下左右移动。玩特殊形状的迷宫时，还可以用A、S、Z、X键进行斜向移动，让你更容易到达某些位置。

圆形迷宫有特别的移动方式，你可以用Q和W键来顺时针或逆时针转动，用P、L和分号键在内圈和外圈之间切换移动。这些按键的设计让你在圆形迷宫中移动更加灵活自如。

如果觉得用键盘太麻烦，还可以直接用鼠标。只要把鼠标移动到你想去的方向，角色就会自动朝那个方向移动。

### 辅助功能

此外游戏提供了几个实用的辅助功能。

如果你实在头晕眼花找不到方向了，可以点击"**显示路径**"，它会**用醒目的颜色标记出从入口到出口的最短路径**。

如果你对迷宫结构感兴趣，可以点击"**显示距离**"用不同的颜色展示从起点到迷宫中每个位置的最短距离，帮你更好地理解迷宫的布局。

如果你觉得某个迷宫特别有趣，还可以用"**下载迷宫**"功能把它保存成SVG格式的图片，方便以后查看或分享。这里下载的是当前渲染的迷宫，可能带有最短路径，距离地图或者你走过的路径。

如果你成功走到了终点，页面会显示你的表现，包括多个重要数据：

1. 从你开始移动到到达终点的完成时间；
2. 在探索过程中访问过多少个格子；
3. 最优路径的长度（也就是从入口到出口的最短距离）；
4. 你的路径效率（实际走过的路径与最短路径的比值）；
5. 以及你的移动速度（每秒平均走过多少个格子）。
   
通过这些数据，你可以了解自己的解谜表现，不断提升探索迷宫的技巧。

## 各种迷宫生成的高级设置

### 迷宫形状设置

本页面迷宫的生成中，支持多种迷宫形状。首先是方形迷宫，这是一种经典的迷宫形式，由传统的方格组成，适合初学者和喜欢经典风格的玩家。接下来是三角形迷宫，这种迷宫由三角形单元构成，路径更加错综复杂，适合想要挑战更高难度的玩家。

如果你想尝试不同的视觉效果，可以选择六边形迷宫，它的设计灵感来源于蜂巢，路径的连接方式更加多样化，带来全新的解谜体验。最后是圆形迷宫，这种迷宫由同心圆构成，独特的布局让你在探索时需要考虑不同的移动策略。

![迷宫生成器生成的各种迷宫形状](https://slefboot-1251736664.file.myqcloud.com/20241205_ai_gallery_maze_alltype.png)

### 出口配置

在迷宫游戏中，出口的配置可以极大地影响游戏的难度和体验。首先是“最难路径”选项，这个配置会**自动选择迷宫中最远的两点作为入口和出口，给玩家带来最大的挑战，适合那些喜欢极限挑战的玩家**。

如果你更喜欢传统的迷宫布局，可以选择“水平出口”配置，这种设置会在迷宫的左右两侧设置入口和出口，路径相对简单明了。还有一种是“垂直出口”配置，它会在迷宫的上下两侧设置入口和出口，给玩家带来不同的解谜体验。

### 迷宫大小，随机种子等其他设置

游戏还提供了一些实用的自定义设置，对于方形、三角形和六边形迷宫，你可以通过调整宽度和高度来控制迷宫的大小。想要更具挑战性的迷宫？试着增加宽度和高度。想要快速练习？可以设置小一点的尺寸。

**圆形迷宫则比较特别，你需要设置的是层数，也就是同心圆的数量**。层数越多，迷宫就越复杂，探索的空间也就越大。

如果你发现了一个特别喜欢的迷宫，**可以记下它的种子值**。每个迷宫都有一个独特的种子值，输入相同的种子值就能重新生成完全相同的迷宫。这个功能特别适合和朋友比赛，或者重新挑战自己喜欢的迷宫布局。不过要记得，这里的种子和迷宫形状，出口配置，迷宫生成算法是息息相关的，只有相同配置下，同样的种子才会生成同样的迷宫。

### 迷宫生成算法

提供多种迷宫生成算法，每种算法会产生不同风格的迷宫：

| 算法名称 | 速度 | 复杂度 | 内存占用 | 路径特点 | 优点 | 缺点 |
|---------|------|--------|----------|----------|------|------|
| Binary Tree | O(n) | 低 | 低 | 总是偏向东南方向 | 实现简单<br>速度极快<br>内存占用小 | 路径有明显偏向性<br>缺乏随机性<br>生成的迷宫难度较低 |
| Sidewinder | O(n) | 低 | 低 | 每行独立生成，有水平偏向 | 速度快<br>实现相对简单<br>比Binary Tree更随机 | 仍有方向偏向性<br>只适用于方形迷宫<br>路径模式可预测 |
| Aldous-Broder | O(n³) | 高 | 低 | 完全随机，无偏向性 | 生成真正随机的迷宫<br>路径分布均匀<br>适用于所有形状 | 速度极慢<br>对大型迷宫不实用<br>生成时间不可预测 |
| Wilson's | O(n²) | 中 | 低 | 完全无偏向，均匀分布 | 生成无偏向迷宫<br>路径质量高<br>结果统计均匀 | 速度慢<br>不适合实时生成<br>实现较复杂 |
| Hunt and Kill | O(n²) | 中 | 低 | 倾向生成较长的路径 | 内存使用效率高<br>生成迷宫比较均衡<br>适用于所有形状 | 速度中等<br>有轻微路径偏向<br>可能产生明显的扫描痕迹 |
| Recursive Backtracker | O(n) | 中 | 高 | 生成长路径，较少死胡同 | 速度快<br>生成的迷宫趣味性强<br>路径曲折度高 | 内存占用大<br>需要递归栈<br>可能栈溢出 |
| Kruskal's | O(n log n) | 中 | 中 | 路径分布均匀，较短 | 生成均衡的迷宫<br>适合并行处理<br>结果可预测 | 需要额外的数据结构<br>实现相对复杂<br>只适用于方形迷宫 |
| Simplified Prim's | O(n) | 低 | 低 | 树状分支结构 | 速度快<br>实现简单<br>内存占用小 | 随机性较低<br>容易形成直线路径<br>分支特征明显 |
| True Prim's | O(n log n) | 中 | 中 | 较为均衡的树状结构 | 生成质量高<br>路径分布合理<br>适用于所有形状 | 速度较慢<br>实现复杂<br>需要优先队列 |
| Eller's | O(n) | 高 | 低 | 行式生成，内存效率高 | 速度极快<br>内存占用最小<br>可生成无限大迷宫 | 实现最复杂<br>只适用于方形迷宫<br>调试困难 |

如果对**迷宫生成过程感兴趣的玩家，可以勾选"显示迷宫生成过程"选项**。这样你就能看到迷宫是如何一步步构建出来的，非常有趣，也能帮助你理解迷宫生成的原理。