资源图标

转载 开源 [其他] Maze.js-基于递归分割算法实现的简单迷宫生成器 Maze.js 1.0

没有下载权限
版权类型
转载
原帖地址
https://klpbbs.com/thread-137531-1-1.html
语言支持
  1. 中文(简体)
[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]
作者
cacca
下载
0
查看
32
首次发布
最后更新
评分
0.00 星 0 星

来自cacca的更多资源

后退
顶部