見出し画像

【Excel VBA】迷路を描く

はじめに

サムネイルみたいな迷路が簡単に作れるマクロを作りました!※有料部分よりダウンロード可。まさかのクオリティで子どもウケまちがいなし。
コーディングは結構苦労しましたが使い方は簡単。セルを好きなように塗りつぶしてマクロを実行するだけです。

迷路作成の流れ

迷路の生成アルゴリズムは「壁伸ばし法」というものです。以下のサイト様を参考にさせて頂きました。できると結構達成感あるので、腕に覚えのある方はチャレンジしてみてはいかがでしょうか。

※サムネイル等で紹介している、キャラクターをモチーフにした迷路そのものの販売はしておりません。本記事のツールをダウンロードし、個人で作成していただきますようお願い致します。



使い方

1.Maze_Generator.xlsm(有料部分よりダウンロード可)を開く

セキュリティの警告が出る場合は「コンテンツの有効化」ボタンを押して下さい。

Maze_Generetor.xlsmを開いたところ

2.迷路の設定

「迷路の設定」シートでオプションを指定できます。
※そのままでも問題ありません。

通路幅
壁幅を1とした時の通路の幅を選択できます(1~5)。水色のセルのプルダウンから選択します。

通路幅の設定

通路の色
通路の色を、白、黒、半透明の3つから選択できます。水色のセルのプルダウンから選択します。

通路の色の設定

描画速度
迷路生成の際、計算途中を描画します。壁が伸びていく様子が分かります。水色のセルのプルダウンから選択します。
OFF:描画を行わず、速度を優先します
0~500:壁を伸ばす描画の途中に入れるウェイト時間をミリ秒で指定します。

壁伸ばしの計算途中の描画

3.迷路を作る

元絵を描くシートを作成する
「迷路の設定」が終わったら、Ctrl + Shift +S でシートを追加します。通路幅が反映されたシートが自動で生成されます。

通路幅=2でシートを追加したところ

元絵を描く
好きな色、形にセルを塗りつぶします。塗りつぶした範囲が迷路の生成領域になります。白で塗りつぶしても迷路の生成対象となりますので、迷路の範囲を狭める場合セルの色は「塗りつぶしなし」としてください。塗りつぶしの範囲に穴(「塗りつぶしなし」の領域)を作っても問題ありません。

元絵の例(穴空きでもOK)

最小サイズは、5x5セルです。これ以上範囲が小さいと迷路が作れません。最大サイズ(実験して確認できているサイズ)は、512x512セルです。これより大きいサイズも時間かければ作れると思いますが、どこまで大きくできるかの限界は調べられていません。

512x512セルの例

マクロを実行する
元絵ができたら、Ctrl + Shift +M でマクロを実行します。元絵をコピーしたシートが自動で生成されて迷路の生成が始まります。計算時間は、描画速度=5、64x64セルで1分くらいです。カーソルをExcelのウィンドウから外すと少し速くなります。
時間がかかりすぎて中断したい場合はescキーを押すことで中断できます。

計算終了後

スタートとゴールを決める
外壁に2か所、塗りつぶしなしのセルを作ります。これがスタートとゴールになります。

外壁を2か所塗りつぶしなしにする

4.正解ルートを生成する

スタートとゴールを決めたら、Ctrl + Shift +A でマクロを実行します。迷路をコピーしたシートが自動で生成されて正解ルートの生成が始まります。迷路生成より時間はかかりません。

正解ルートの生成

穴空きの迷路の場合、スタートからゴールまでのルートが複数になります。これで完成でもいいですが、壁を調整してルートを絞ることが出来ます。

5.自分で壁を建ててルートを調整する(こだわりたい場合)

正解ルートを見ると、赤く印をつけたところに壁を建てれば一本道になりそうなことが分かります。迷路のシートに戻って、壁を建てます。近くの壁を選択して、セルの右下に出る+マークをつかみ、壁を建てたい方向にマウスを動かします。
壁のセルの中には「・」が文字として入っています。塗りつぶしがある、かつ「・」が入っていることが壁の目印になっていますので、ただ通路を壁と同じ色に塗るだけではだめです。

自分で壁を建てる

6.再度、正解ルートを生成する(こだわりたい場合)

もう一度、Ctrl + Shift +A でマクロを実行します。正解ルートを確認すると、ちゃんと一本道になっています。

一本道になりました!

暇つぶしに、みなさんもいろいろな迷路を作ってみてくださいね。

ここから先は

38字 / 1ファイル

¥ 400

この記事が参加している募集

この記事が気に入ったらチップで応援してみませんか?