[MD]
# Maze.js — 基于递归分割算法的 JavaScript 迷宫生成器
这是一个使用递归分割算法实现的轻量级 JavaScript 迷宫生成器,输出结果为由两种 emoji 组成的二维数组。
---
## 安装
克隆仓库:
```
git clone https://github.com/MengZeMC/Maze.js
```
进入项目目录:
```
cd Maze.js
```
通过 npm 安装依赖(需要先安装 `seedrandom`):
```
npm i
```
---
## 快速启动
直接运行以下命令启动迷宫:
```
node Maze.js
```
---
## 深度开发:实例化迷宫
创建 `Maze` 类的实例时,需要传入宽度、高度,以及可选的种子值:
```
const seedrandom = require('seedrandom');
const Maze = require('./Maze');
// 生成一个随机种子
const randomSeed = Math.floor(Math.random() * 1000000);
// 创建宽度为 35,高度为 20 的迷宫,并使用随机种子
const maze = new Maze(35, 20, randomSeed.toString());
```
**生成迷宫**:调用实例的 `generate()` 方法:
```
maze.generate();
```
**显示迷宫**:使用 `toString()` 方法获取迷宫的字符串表示:
```
console.log('迷宫:');
console.log(maze.toString());
```
**获取种子**:获取本次生成所用的唯一标识符(种子):
```
console.log('迷宫唯一标识符:', randomSeed);
```
---
## Maze 类 API
`Maze` 类提供以下方法:
| 方法 | 说明 |
|------|------|
| `constructor(width, height, seed)` | 初始化迷宫,参数为宽度、高度和可选种子 |
| `generate()` | 使用递归分割算法生成迷宫 |
| `toString()` | 返回迷宫的字符串表示形式 |
| `findDeadEnds(x, y)` | 查找迷宫中所有的死胡同 |
| `removeDeadEnds()` | 移除死胡同,生成结构更复杂的迷宫 |
---
## 完整示例
```
const seedrandom = require('seedrandom');
const Maze = require('./Maze');
// 生成一个随机种子
const randomSeed = Math.floor(Math.random() * 1000000);
// 创建宽度为 35,高度为 20 的迷宫,并使用随机种子
const maze = new Maze(35, 20, randomSeed.toString());
// 生成迷宫
maze.generate();
// 显示迷宫
console.log('迷宫:');
console.log(maze.toString());
// 显示迷宫的唯一标识符(种子)
console.log('迷宫唯一标识符:', randomSeed);
```
可以自由调整迷宫的宽高尺寸,或传入不同种子来生成独特的迷宫布局。
---
## 更新日志
- 1.0.0:初始版本发布,算法尚不完善,存在较多 bug
- 1.0.1:完善了生成算法,改用 emoji 替代普通字符,新增出入口与通关路径,迷宫现已可正常使用
[/MD]
# Maze.js — 基于递归分割算法的 JavaScript 迷宫生成器
这是一个使用递归分割算法实现的轻量级 JavaScript 迷宫生成器,输出结果为由两种 emoji 组成的二维数组。
---
## 安装
克隆仓库:
```
git clone https://github.com/MengZeMC/Maze.js
```
进入项目目录:
```
cd Maze.js
```
通过 npm 安装依赖(需要先安装 `seedrandom`):
```
npm i
```
---
## 快速启动
直接运行以下命令启动迷宫:
```
node Maze.js
```
---
## 深度开发:实例化迷宫
创建 `Maze` 类的实例时,需要传入宽度、高度,以及可选的种子值:
```
const seedrandom = require('seedrandom');
const Maze = require('./Maze');
// 生成一个随机种子
const randomSeed = Math.floor(Math.random() * 1000000);
// 创建宽度为 35,高度为 20 的迷宫,并使用随机种子
const maze = new Maze(35, 20, randomSeed.toString());
```
**生成迷宫**:调用实例的 `generate()` 方法:
```
maze.generate();
```
**显示迷宫**:使用 `toString()` 方法获取迷宫的字符串表示:
```
console.log('迷宫:');
console.log(maze.toString());
```
**获取种子**:获取本次生成所用的唯一标识符(种子):
```
console.log('迷宫唯一标识符:', randomSeed);
```
---
## Maze 类 API
`Maze` 类提供以下方法:
| 方法 | 说明 |
|------|------|
| `constructor(width, height, seed)` | 初始化迷宫,参数为宽度、高度和可选种子 |
| `generate()` | 使用递归分割算法生成迷宫 |
| `toString()` | 返回迷宫的字符串表示形式 |
| `findDeadEnds(x, y)` | 查找迷宫中所有的死胡同 |
| `removeDeadEnds()` | 移除死胡同,生成结构更复杂的迷宫 |
---
## 完整示例
```
const seedrandom = require('seedrandom');
const Maze = require('./Maze');
// 生成一个随机种子
const randomSeed = Math.floor(Math.random() * 1000000);
// 创建宽度为 35,高度为 20 的迷宫,并使用随机种子
const maze = new Maze(35, 20, randomSeed.toString());
// 生成迷宫
maze.generate();
// 显示迷宫
console.log('迷宫:');
console.log(maze.toString());
// 显示迷宫的唯一标识符(种子)
console.log('迷宫唯一标识符:', randomSeed);
```
可以自由调整迷宫的宽高尺寸,或传入不同种子来生成独特的迷宫布局。
---
## 更新日志
- 1.0.0:初始版本发布,算法尚不完善,存在较多 bug
- 1.0.1:完善了生成算法,改用 emoji 替代普通字符,新增出入口与通关路径,迷宫现已可正常使用
[/MD]