Maze generator - 異なる形状、サイズの迷路を作成できるコマンドラインツール

S 20170426 150436

迷路とは「複雑に入り組んだ道を抜けて、目的地、ゴールまで辿り着くことを目指すゲーム」(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 ]

Optional arguments
  --help  Show this message and exit
  -m      Maze type
          0: Rectangular
          1: Hexagonal (triangular lattice)
          2: Honeycomb
          3: Circular
          4: Circular (triangular lattice)
  -a      Algorithm type
          0: Kruskal's algorithm
          1: Depth-first search
          2: Breadth-first search
  -s      Size (non-rectangular mazes)
  -w,-h   Width and height (rectangular maze)
  -t      Output type
          0: SVG output
          1: png output using gnuplot (.plt) intermediate
  -o      Prefix for .svg, .plt and .png outputs

▲"-m"が迷路の種類、"-a"がアルゴリズムの種類、"-s"が迷路のサイズなどです。

S 20170426 151005

▲作成されたmaze.svgをSafariで表示してみました。

まとめ

Maze generatorを利用すればさまざまなタイプの迷路を簡単に作成することができます。迷路好きの方、迷路のアルゴリズムに興味のある方は使用してみてはいかがでしょうか。

スポンサーリンク
レクタングル(大)広告
レクタングル(大)広告

フォローする