迷路ジェネレータ

今年はプログラミング教育が小学校で必須化される年になります。このブログも5年目を迎え、また私の小学生向けプログラミング教室も4年目になろうとしています。
これまでやってきて思うことは、Scratchのプログラミング環境というのは決して入門用のものではなく、これだけでオリジナリティのある世界を作り出せるパワーを持っています。私のような仕事でプログラマをやっている人でも創造性をとても刺激されるツールです。もちろんWebサーバやPCのアプリのようなものはつくれませんが、アルゴリズムを考えたりする思考部分を鍛えるのには最適だと思っています。

今回は、そのScratchプログラミングの特徴的な機能である、あたり判定とペンツールを使って、迷路ジェネレータを作ってみました。(環境: Scratch2 / macOS High Sierra)


まず迷路を作る部分が上です。点のスプライトを移動させることで線を描いています。ランダムで空白を探して描画しているので、ループを多めにして試行しています。スタート、ゴールは用途に応じて作ってください。(スタートスプライトからゴールスプライトに触る時間を競うとか・・)

これはプレイヤーにみたてたスプライトのプログラムです。ここではスペースキーで動き出しランダムで道を選ぶようにしています。(軌跡は線で描画)
迷路が描画されたらスプライトをマウスで好みの位置に移動してからスペースキーを押します。

プレイヤーは人でもいいですしアルゴリズムでもいいですが、アルゴリズムをいろいろと変えて軌跡を眺めているのも面白いと思います。
以下のシミュレーションと同じ考え方ですね。

シミュレーション