プログラミングとパズルゲームの共通点は? その難しさと楽しさ
そこで【「動きタグ」が下向きになったら】という条件が指定されたアイコンを設置し、「カメラ」タグのコネクタとつなぐ。これで【「動きタグ」が上向き、または、下向きになったら】⇒【背面カメラで写真を撮る】というプログラムになる。
このように、ゴールとなるアクションにたどり着くまでの条件の指定に不備や不足を洗い出していく作業は、ちょっと前に流行った「アングリーバード」のような、パズル系のアクションゲームを解く感覚に似ている気がする。自分で作ったことはないけれど「ピタゴラスイッチ」のピタゴラ装置も、そういう思考回路で完成させていくのだろう。
複数タグの組み合わせで、イメージする機能が実現する
そんなパズルを解くようなプログラムの作業でいちばん頭を悩ませたのが、「寝ている」状態をプログラムでどのように表現するかだった。
先ほども触れたように、今回はイヌちゃんが「寝ている」状態を、【体を横向きにして】【一定時間動いていない】と定義している。しかし、ここまでのプログラムでは前半の【体を横向きにして】までしか表現できていない。これではイヌちゃんがゴロンと横向きになるだけで撮影されてしまうことになるのだ。
では、後半の【一定時間動いていない】を、どのように表現すればよいのだろう?
あれこれ悩んだ結果、時間に関係する条件が指定できる「タイマータグ」と、回数を数える「カウンタータグ」のふたつを組み合わせることで、一定の時間が経過したらアクションを促す信号を出す、一種の時限装置を完成させることができた。
ひとつめのポイントは「タイマータグ」の使い方だ。「一定の間隔で」という画面で秒数の指定を行うと、指定した間隔でアプリの画面上で、次につないでいるタグへ信号を送ることができるようになる。この場合は、「動きタグ」が上向き、または下向きになったら、1秒ごとに信号を連続して送るように指定した。