前回までの成果
何とかアクリルキューブに収まりましたが、ただ仮のパターンが出るだけ。面白くありません。
電気工事士の試験が延期となって、STAY HOMEの間に、ちょっと改善することにしました。
迷路
いろいろ考えて、簡易迷路をつくることにしました。
迷路自動生成→迷路解答(プレイ)→迷路自動求解→解答表示までの一連の実装を考えます。
迷路自動生成と求解のアルゴリズムは、ググるといろいろ出てきましたが、そんなに複雑なものは実装できないので、単純に穴掘り法と塗りつぶし法で作ることに。
問題は、ユーザインターフェースです。
最初に表示ですが、8X8のLEDどうやって表現するか。結局、自分を中心に壁と通路を配置することにしました。また、進んでいる方向を示せるようにと、上下左右対称の表示にしたかったので、自分を2x2のLEDで表現し、進んでいる方向の2個を点滅することで表現しました。
イメージは、こんな感じです。
迷路求解と解答表示
最初に実装したのが、迷路自動求解と解答表示です。PICのメモリ容量から、23×23マスの迷路が最大とし、サンプル迷路(下図、15x15マス)を自分で作り、その自動求解と解答表示を実装しました。いまは、スイッチを押すたびに1ステップ進むように実装しています。
進み方も、3LED分で1ステップなので、それを分割して表示するようにしました。ただし、表示をスクロールするとき、次に表示する部分を描画するメモリ余裕がなかったので、1ステップ移動した後に表示しています。
ここまで作ったのが、これです。まだ動画を張る技を知らないので、静止画で殆ど分かりませんがあしからず。 YouTubeにアップしてみした。
タイトル表示(スクロール)のあと、
スタート地点(1,1の位置)
真ん中の4つが、自分
最初のコーナー
順次、迷路を移動(撮影タイミングで、自分の表示が消えているものもあり)、ゴールまで無事たどりつくところまでできました。
Simple Maze by 8X8 MATRIX LED #1
次は、迷路解答(プレイ)を実装しますが、最大の問題は、PICのIOをほぼ使い切っているのと、本体をアクリルケースに入れた状態でも動くようにしたいので、一工夫がいります。