この記事はtomowarkar ひとりAdvent Calendar 2019の13日目の記事です。
カレンダーも折り返し地点ですね。
はじめに
Goで画像生成をして遊んでいたらもう少し本格的なものを作ってみたく、機能を追加しつつツール化してみました。
完璧自己満足案件ですね😸
ランダムドットの生成に加え、以下記事を参考に中点変位法を用いたマインクラフトのようなワールドマップの生成を手軽にできるようにしました。
現状ランダムドット画像の生成、中点変位法を用いた画像生成の二つの機能しかありませんが、ゆるりと機能追加していけたらなーという次第です。
使い方
ソースコード
go get
go get -u github.com/tomowarkar/biome
コード
ランダムドット画像生成
package main
import "github.com/tomowarkar/biome"
func main() {
var seed int64
scale := 100
d := biome.NewDicts()
d.Set(0, biome.Khaki)
d.Set(1, biome.Darkgoldenrod)
d.Set(2, biome.Royalblue)
d.Set(3, biome.Seagreen)
b := biome.NewWorld(5, 8)
b.RandIntn(len(d), seed)
err := b.ToPng(scale, d, "image")
if err != nil {
panic(err)
}
}
中点変位法を用いたワールドマップ生成
package main
import "github.com/tomowarkar/biome"
func main() {
var seed int64
width, height, scale := 48, 32, 10
world := biome.Flactal(height, width, seed)
d := biome.DefaultDicts()
world.ToPng(scale, d, "image")
}
width, height, scale := 240, 160, 2
おわりに
Goのinterface
やポインタとはあまりお友達ではなかったのですが、このツールを作るにあたってinterface
やポインタを考えながら使う必要ができ、少しはお友達になれた気がします。
2つの機能しかありませんがそれらしさが出てとても良き良きでした。
以上明日も頑張ります!!
tomowarkar ひとりAdvent Calendar Advent Calendar 2019