Files
go-maze/README.md

76 lines
1.4 KiB
Markdown
Raw Permalink Normal View History

2026-02-26 23:28:08 +02:00
# go-maze
Tiny Go maze library I built for fun.
It generates random mazes, can solve them, and can render PNGs.
## What it does
- Generate a maze grid (`0 = wall`, `1 = walkable`)
- Solve a maze (top entrance -> bottom exit)
- Render mazes as images
- Optionally highlight the solution path
## Upcoming Features
- [ ] Add the posibiltiy for entrance/exit to be on the left/right walls
- [ ] Add the posiblity of choice when it comes to which position to put the entrance or the exit
- [ ] Add complex maze shapes, such as L, U, etc...
## Example images
Normal maze:
![Normal maze](docs/images/maze.png)
Maze with solution path:
![Solved maze](docs/images/maze_solved.png)
## Install
```bash
go get tea.chunkbyte.com/kato/go-maze@latest
```
If this is private on your Gitea, set:
```bash
go env -w GOPRIVATE=tea.chunkbyte.com # You need to do this
git config --global url."ssh://git@tea.chunkbyte.com:2422/".insteadOf "https://tea.chunkbyte.com/" # Optional
```
## Use in code
```go
package main
import (
"log"
maze "tea.chunkbyte.com/kato/go-maze/maze"
)
func main() {
grid, err := maze.GenerateWithSeed(41, 41, 42)
if err != nil {
log.Fatal(err)
}
opts := maze.DefaultRenderOptions()
opts.Scale = 8
opts.HighlightPath = true
if err := maze.SavePNG(grid, "maze.png", opts); err != nil {
log.Fatal(err)
}
}
```
## Run the web example
```bash
go run ./examples/web
```
Then open `http://localhost:8080`.