迷宫图片生成
生成器所有处理都在浏览器本地完成,数据不上传服务器
生成一张迷宫图片,可以导出 SVG 拿去打印或做素材。 生成的迷宫一定有解,而且解只有一条。 用的是递归回溯算法(深度优先 + 随机打通邻居),它有两条数学性质:任意两点之间恰好有一条通路、没有环。这一点值得说明 —— 另一种常见的写法是先砌满墙再随机拆掉一些,那会拆出孤岛(迷宫无解)或拆出环路(有多条解),而两者在屏幕上看起来都「像个迷宫」。 随机数是有种子的。 迷宫的每一处选择都要掷骰子;用 `Math.random` 的话「同样的参数再来一张」会得到另一个迷宫,想打印同一张出来对比就不行了。这里用的是带种子的伪随机数发生器:同样的尺寸 + 同样的种子 = 一模一样的迷宫。它不需要密码学强度,只是个图案。 入口在左上角、出口在右下角,两侧的墙是拆掉的 —— 不打通的话迷宫看起来是封闭的,会被当成生成失败。勾上「画出解法路径」可以顺便得到答案。
功能
- 递归回溯算法:生成的迷宫一定有解,且解唯一(无环、无孤岛)
- 列数、行数、格宽可调(4×4 到 80×80)
- 带种子的随机:同样的参数永远得到同一张迷宫,可复现
- 入口在左上、出口在右下,两侧墙壁已打通
- 可选画出解法路径,颜色可调
- 墙色与底色可调(深色底配浅色墙也行)
- 导出 SVG:矢量,放大打印不糊,也能当素材贴进设计稿
- 相通的墙只画一次 —— 每条线不会因为被画两遍而变粗
使用方法
- 调列数、行数、格宽,看着右边的预览
- 换一个种子就是另一个迷宫;想复现就记下种子
- 需要答案时勾上「画出解法路径」
- 点「下载 .svg」拿走矢量文件
常见问题
- 生成的迷宫一定有解吗?
- 一定有,而且解法唯一。递归回溯生成的是生成树:每打通一面墙就等于连上一条边,最终所有格子恰好被 n−1 条边连起来(n 是格子数)。这个结构在数学上保证了两件事 —— 任意两点之间都有通路(所以从入口一定走得到出口),且没有环(所以通路只有一条)。另一种「先砌满再随机拆」的写法做不到这一点,它可能留下走不到的区域,而那种迷宫在屏幕上看起来完全正常。
- 「种子」是干什么的?
- 用来复现。迷宫生成过程要掷很多次骰子,用真随机的话「同样的参数再生成一次」会得到另一张图。带种子的发生器把「第几次掷出什么」固定下来,所以同样的尺寸 + 同样的种子 = 完全一样的迷宫。这在实际使用中很有用:你打印了一张给孩子的迷宫,孩子要再要一张同样的,或者你想把难度调高一点但保持风格接近,记下种子就行。它不需要密码学强度 —— 这只是个图案,不是密钥。
- 能直接打印吗?
- 能。下载的 SVG 是矢量图,打印时放大也不会糊 —— 这正是用 SVG 而不是 PNG 的原因:同样一张 20×14 的迷宫,PNG 在放大到 A4 时会看到锯齿,而矢量线始终干净。如果打印出来觉得线太细,把格宽调大(每格的像素数)比调线宽更有效,因为线宽是按格宽比例算的。
相关工具
格子纸制作
生成器生成方格纸、横线纸、点阵纸、田字格与米字格并导出 SVG。尺寸用毫米,打印出来是 1:1。
图表生成
生成器粘贴「标签,数值」两列数据,生成饼图、柱状图、折线图、散点图或雷达图,实时预览并导出 SVG 源码。
二维码
生成器把文本、链接、WiFi 配置、名片、日历事件生成二维码,前景与背景色可调,可下载 PNG 或矢量 SVG。编码全程在浏览器本地完成。
UUID 生成
生成器一次生成一整列 UUID v4、v7、ULID、NanoID 或 MongoDB ObjectId,每行一条,可直接粘进表格或脚本。随机数取自浏览器加密接口,不联网、不记录。
占位文本
生成器生成占位文本,可选拉丁文 Lorem ipsum、英文句子、中文或日文填充句,按段落、句子或单词输出。全部在浏览器本地生成,不联网。
模拟数据
生成器按「字段名:类型」写几行字段,就能得到一整批格式逼真的模拟数据,可导出 JSON、CSV、TSV、SQL、XML、YAML 或 TOML。