From 8a937230ab6893a8d03d6b28545cfdb3c7363b1f Mon Sep 17 00:00:00 2001 From: Quinten Clause Date: Mon, 14 Jul 2025 12:16:41 +0200 Subject: [PATCH] Add texture bias option Feature request #7 Create a more horizontal or vertical maze --- Readme.md | 8 +++++++- src/generate-maze.ts | 4 ++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Readme.md b/Readme.md index c803b1b..c88b1ee 100644 --- a/Readme.md +++ b/Readme.md @@ -64,9 +64,15 @@ const maze = generator(8, 4, false); // Width == 8, height == 4, maze edges are closed, using random seed const maze = generator(8, 4, true, 123456); -``` +// Width == 8, height == 8, edges are open, default seed 1 +// and texture == 0.9 (very horizontal maze) +const maze = generator(8, 8, false, 1, 0.9); +// Width == 8, height == 8, edges are open, default seed 1 +// and texture == 0.1 (very vertical maze) +const maze = generator(8, 8, false, 1, 0.1); +``` _Note: the maze is an array of rows, so to access individual cells by their x/y positions, you need to specify the row first. For example: diff --git a/src/generate-maze.ts b/src/generate-maze.ts index 2eaaca1..ad2a66e 100644 --- a/src/generate-maze.ts +++ b/src/generate-maze.ts @@ -112,7 +112,7 @@ function addSetExits(row: Cell[], nextRow: Cell[], random: () => number) { }); } -function generate(width = 8, height = width, closed = true, seed = 1) { +function generate(width = 8, height = width, closed = true, seed = 1, texture = 0.5) { const random = mulberry32(seed); const maze = []; const r = range(width); @@ -135,7 +135,7 @@ function generate(width = 8, height = width, closed = true, seed = 1) { // All rows except last: initial(maze).forEach((row, y) => { // TODO initial temp? populateMissingSets(row, random); - mergeRandomSetsIn(row, random); + mergeRandomSetsIn(row, random, texture); addSetExits(row, maze[y + 1], random); });