迷路とは「複雑に入り組んだ道を抜けて、目的地、ゴールまで辿り着くことを目指すゲーム」(by Wikipedia)。
一方、本日紹介する「Maze generator」はこの迷路の画像を作成することができるコマンドラインツールです。
C++で作られていて、迷路のタイプやアルゴリズム、サイズをパラメータとして与えると、さまざまな迷路画像を作成することができるというものです。
迷路画像は標準でsvg形式に対応しており、gnuplotが存在すればpng形式で出力することも可能です。以下具体的な使用方法を説明したいと思います。
Maze generatorの使用方法
Maze generatorのソースコードはC++11で記述されており、それほど古くないC++コンパイラ(g++等)を利用してコンパイルすることができます。例えばmacOS環境では、標準g++を利用してコンパイルできました。
git clone https://github.com/razimantv/mazegenerator.git cd mazegenerator/src make
▲srcディレクトリ内にmazegenという実行ファイルができていればビルド成功です。
オプションなしでmazegenを実行するとデフォルトの正方形の迷路が作成されます。
$ ./mazegen Rectangular maze of size 20x20 Maze generation using Kruskal's algorithm Initialising graph... Generating maze...
▲「20x20サイズ」のRectangular maze」で「Kruskalアルゴリズム」を使用した迷路が作成されたことがわかります。ディレクトリ内にmaze.svgというファイルが書き出されていますので、ブラウザなどで表示してみましょう。
各種オプションを指定することもできます。
$ ./mazegen -m 3 -a 1 -s 100 Circular maze of size 100 Maze generation using Depth-first search Initialising graph... Generating maze... Rendering maze to 'maze.svg'...
▲「100サイズ」の「Circular maze」で「深さ優先探索」で迷路が作成されます。
各オプションの詳細は以下のUsage表示で確認できます。
Usage: mazegen [--help] [-m] [-a ] [-s | -w -h ] [-t
▲"-m"が迷路の種類、"-a"がアルゴリズムの種類、"-s"が迷路のサイズなどです。
▲作成されたmaze.svgをSafariで表示してみました。
まとめ
Maze generatorを利用すればさまざまなタイプの迷路を簡単に作成することができます。迷路好きの方、迷路のアルゴリズムに興味のある方は使用してみてはいかがでしょうか。