この記事はtomowarkar ひとりAdvent Calendar 2019の21日目の記事です。
はじめに
以前作成したツールに迷路生成機能を追加してみました。
このように自動迷路を生成する機能と、最短経路を求める機能になります。
迷路生成アルゴリズムは現状棒倒し法と穴掘り法の2種類だけなのでゆるりと拡張していけたらなという感じです。
使い方
ソースコード
go get
go get -u github.com/tomowarkar/biome
コード
package main
import (
"image/color"
"github.com/tomowarkar/biome/maze"
)
func main() {
// 迷路描画フィールドの生成
mazeWidth, mazeHeight := 37, 27
m := maze.NewMaze(mazeHeight, mazeWidth)
var seed int64
palette := []color.Color{
color.RGBA{184, 134, 11, 255},
color.RGBA{240, 230, 140, 255},
color.RGBA{255, 0, 255, 255},
}
// 棒倒し法
m.StickDown(seed)
// 迷路を10倍スケールでpng変換
m.ToPng("maze1", 10, palette)
// 迷路の最短経路を導出
m.Solve()
m.ToPng("route1", 10, palette)
// 穴掘り法
m.Digging(seed)
m.ToPng("maze2", 10, palette)
m.Solve()
m.ToPng("route", 10, palette)
}
棒倒し法
maze1.png
route1.png
穴掘り法
maze2.png
route2.png
おわりに
明日はGIF画像生成について書いていけたらなと思います。
以上明日も頑張ります!!
tomowarkar ひとりAdvent Calendar Advent Calendar 2019