侧边栏壁纸

Maze.js-基于递归分割算法实现的简单迷宫生成器

2024年06月03日 232阅读 5评论 2点赞

Maze.js

这是一个使用递归分割算法实现的简单 JavaScript 迷宫生成器。该生成器将迷宫生成为两个emoji的二维数组。

使用方法

首先得安装项目,克隆版仓库:

git clone https://github.com/MengZeMC/Maze.js

然后进入项目目录:

cd Maze.js

开始使用项目:

确保已安装 seedrandom。您可以通过 npm 安装它:

   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());
  1. 生成迷宫:调用迷宫实例的 generate() 方法来生成迷宫。
   maze.generate();
  1. 显示迷宫:使用 toString() 方法获取迷宫的字符串表示形式。
   console.log('迷宫:');
   console.log(maze.toString());
  1. 获取唯一标识符:如果需要,您可以获取用于生成迷宫的唯一标识符(种子)。
   console.log('迷宫唯一标识符:', randomSeed);

迷宫类

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代替字符,并添加了出入口和通关路径,使迷宫可以正常使用

2

—— 评论区 ——

昵称
邮箱
网址
取消
  1. 头像
    回复

    Sohini Huppman

  2. 头像
    回复

    这个是怎么回事?

    nodejs git seedrandom 等都安装完成了

  3. 头像
    回复

    非常好的软件,就是bug有点多

  4. 头像
    回复

    有点意思
    咦,又改名字了?

    1. 头像
      梦泽 博主
      回复
      @刘郎

      上个月就改了[f=ganga]
      其实改名字是因为之前备案不能带有“博客”两个字,然后备案失败了,就懒得改回去了

人生倒计时
最新评论
舔狗日记