LoginSignup
3
1

More than 3 years have passed since last update.

Goで迷路生成ツールを作る

Last updated at Posted at 2019-12-21

この記事はtomowarkar ひとりAdvent Calendar 2019の21日目の記事です。

はじめに

以前作成したツールに迷路生成機能を追加してみました。

Goで地形生成ツールを作る
迷路の最短経路探索を実装する
OreIs9NBAPeoy2ulD8Fs1576904354-1576904601.gif

このように自動迷路を生成する機能と、最短経路を求める機能になります。

迷路生成アルゴリズムは現状棒倒し法と穴掘り法の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

maze1.png

route1.png

route1.png

穴掘り法

maze2.png

maze2.png

route2.png

route2.png

おわりに

明日はGIF画像生成について書いていけたらなと思います。

以上明日も頑張ります!!
tomowarkar ひとりAdvent Calendar Advent Calendar 2019

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1