2019-12-09
キラキラIoTワークショップに続いて、PCN大阪企画のプログラミングを遊んで学ぶクリスマス会!
IchigoJamに関するクイズを解くと出てくるパスワードを使って、ミヤフィセントに勝ってプレゼントをもらおう!

問題のひとつ、迷路を実際IchigoJamでプログラミングしていく様子を紹介します。


チームで立ち向かう、南大阪の謎の人物、ミヤフィセントからの挑戦!


1 右、2 右、3 右・・・。方眼紙にスタートとゴール、数字と方向が書いてある紙。道筋が鍵になるらしい!?
スタートから右、右、右とたどってもどこにもたどり着かない。
あ、数がちょうど16コある!壁をその方向に伸ばすのでは?
そう、知っている人にはおなじみ迷路を作るアルゴリズムの一つ、棒倒し法ですが、直感的に思いつく子供たちすごい!
迷路が現れ、ゴールまで辿れました!

さて、ここで棒倒し法のアルゴリズムを作ってみましょう!

棒倒し法とは
1. 四角く囲まれた壁の中に
2. 1つ飛ばしに柱を並べて
3. その柱全部を上下左右どこかの方向に倒して
できる迷路です。

四角く囲まれた壁づくり

100 CLS 110 FOR I=0 TO 10 120 LC I,0:?"O":LC 0,I:?"O" 130 LC I,10:?"O":LC 10,I:?"O" 140 NEXT


次に柱を並べよう

150 FOR I=1 TO 4 160 FOR J=1 TO 4 170 LC I*2,J*2:?"O" 180 NEXT 190 NEXT


上下左右をIchigoJamにどう伝える?
例えば上とは横の位置はそのまま、縦の位置をマイナス1した場所のことなので、0,-1。下は 0,1・・・。
こうしてでてくる8つ数字を順に配列にいれて

145 LET[0],0,-1,0,1,-1,0,1,0

ランダムに決めた方向Dを使って、柱から1つ倒して表示!

175 D=RND(4) 176 LC I*2+[D*2],J*2+[D*2+1]:?"O"


迷路できた!


こうして解いた3枚の迷路、それら道筋とぴったり合うのものの裏には新たな問題!


3つの挑戦。


1つ目、伏せ字されている英単語・・・そう、これはおなじみIchigoJamのコマンド!
サクサク解いて、キーワード「SA」をゲット!


IchigoJamも使ってパズルを解く!


優しい、ミヤフィセントw


全部解いたと思ったら、真のボス「モーリィ」登場!爆笑する子供!


隠された問題を探す子供たち


アルファベットも混ざっている、なぞの記号、16進法を使ったキャラクターパターンがでてくるパズル。
「モリ」と表示されるサンプルでは、下はなんと表示される!?


IchigoJamで動かせば簡単!・・・と思いきや、モーリィによって破壊されてしまっていて使えない!
ってことで、みんなで協力して解きました。パスワードは「メリクリ」


パスワードを見事、プレゼントをゲット!


IchigoJamの定番コマンドがデザインされた、プログラミングに便利な特製方眼紙ノート!


動物の子供は遊びが学びと学びますね。人も一緒。楽しい遊びが楽しいのは、学びだから。
PCN大阪&PCN南大阪からの本当のクリスマスプレゼントは「楽しくできた」という目には見えない経験。


ミヤフィセントと!


モーリィと!


子供も大人も楽しいPCN大阪&PCN南大阪のクリスマス会、お誘いありがとうございました!


プログラミングのワクワクをいかに伝えるか、実行と企画し続けること、毎回いろんな学びがあります。

IchigoJam ver 1.3以降のカーソル表示機能を使って、迷路の早解きゲームにしてみました。
最初のINPUTでワールド番号を入力、どんどん大きくなる迷路、全クリアタイムを競ってみよう!

100 INPUT"WORLD?",N:SRND N 110 T=0 120 FOR N=1 TO 10 130 W=N*2+2:CLS 140 FOR I=0 TO W 150 LC I,0:?"O":LC 0,I:?"O" 160 LC I,W:?"O":LC W,I:?"O" 170 NEXT 180 LET[0],-1,0,1,0,-1 190 FOR I=1 TO N 200 FOR J=1 TO N 210 LC I*2,J*2:?"O" 220 D=RND(4) 230 LC I*2+[D],J*2+[D+1]:?"O" 240 NEXT 250 NEXT 260 X=1:Y=1:CLT 270 A=X-BTN(28)+BTN(29) 280 B=Y-BTN(30)+BTN(31) 290 IF SCR(A,B)=0 X=A:Y=B 300 LC X,Y,1 310 IF X<W-1 OR Y<W-1 GOTO 270 320 LC W+2,W/2:?TICK() 330 T=T+TICK():WAIT 30 340 NEXT 350 LC W+2,W/2:?T

N:ワールドID、T:タイム、N,W:迷路サイズ、I,J:ループ変数、D:方向、X,Y:自キャラ座標、A,B:増分
(RUN on IchigoJam web)

links
- キラキラIoTプログラミングワークショップ WS.LEDサンプル集 with IchigoJam 1.4 in 大阪
- PCN大阪
- PCN南大阪

Tweet
クリエイティブ・コモンズ・ライセンス
本ブログの記事や写真は「Creative Commons — CC BY 4.0」の下に提供します。記事内で紹介するプログラムや作品は、それぞれに記載されたライセンスを参照ください。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / 「一日一創」画像 / RSS