10日目の記事でフレーム間差分法での動体検知を試し、背景差分法について言及しました。
でも背景差分法を実際やってみたところ背景に設定した画像と現在のフレームを比較するという、フレーム間差分法よりも簡単なお仕事で、特に書くべき内容は発生しなかったです😅
そしてそれ以上の方法となるとワタクシの知恵と時間が不足💧
むしろ、今あるプログラムを使って何か面白いこと出来ないかな~と考えた結果、「だるまさんがころんだ」ゲームを作ってみることにしました。
やっぱなんかゲームっぽいもの作りたい。
だるまさんがころんだとは
鬼が後ろを向いて目隠しし「だるまさんがころんだ」と言っている間に子は鬼に近づき、「だ」で鬼が振り向いたら子は動きを止めます。
これを繰り返して、動いているところを見つかった子は鬼に捕まり、見つからずに鬼のところまで到達してタッチできたら子の勝ち、という遊びです。
ゲーム内容
- 動体検知を使って、カメラの前でユーザーが動くことで前に進んだこととする。
- 実際の遊び同様に「だるまさんがころん」まではいっぱい動いて歩を進める。
- 「だ」で動きを止めて、一定時間動体検知されないようにする。
- 検知されたら負け、うまく回避して規定の距離を進むことができたら勝利とする。
プログラムの内容
-
動体検知自体は10日の記事のものをそのまま流用。
-
動体検知のタイマーの中で、「だるまさんがころんだ」を一文字ずつ遅延表示。
-
移動中と判定中のフラグを作り、動体検知した際の処理を分ける。
-
「だるまさんがころん…」までは移動中、最後の「だ」で判定中のフラグを立てる🚩
-
移動中は、動体を判定するごとにキャラを1ピクセル進める。
-
判定中は、動体検知したら負け。
-
3秒間ほど動体検知がなければ、移動中に戻して、再び「だるまさんがころんだ」を一文字ずつ遅延表示。
-
最終的に300進んだらユーザーの勝ちとする。(300pxは画面的にも実際にやってみた回数的にも程よい感じでした)
-
カメラを使うけど画面上にはカメラの映像を表示しない。
ビデオ.可視=オフ。
オブジェクトプロパティ構文が神~👼️
実際のプロパティは、「visibility」に「hidden」を、なのですが、v1と同じようにオンオフで設定できるようになっているんです👍️
「だるまさんがころんだ」の文字遅延表示
テキスト=「だるまさんがころんだ」。
描画テキスト=テキストを文字列分解。
# タイマーの中
もし、(動作モード=移動中)かつ(T≧0.5)ならば:
メインへ描画開始。
描画テキストの0から1を配列取り出し。
[文字X,60]へそれを文字描画。
文字X=文字X+(それの文字幅取得)。
T=0。
もし、(描画テキストの要素数)≦0ならば、動作モード=判定中。
文字列分解すると一文字ずつの配列になります。(文字抜き出しだと元の文字列から抜き出した文字は消えず、めんどくさいので配列にしました)
タイマーで0.5秒ごと一文字ずつ文字描画し、次の描画位置を文字幅分右にずらす。
キャラが実際に移動して進んでいく様子も見えるようにしたい
当初、カメが使えるかと思ったのですが、案外ラグがあっていい感じに進んでいかないので、自前で線描画し、絵文字を文字描画することにしました。
メインへ描画開始。黒色に線色設定。5に線太さ設定。
[0,画面高さ/2,画面幅,画面高さ]の描画クリア。
現在位置を1減らす。
[線X,ニコY]から[現在位置,ニコY]へ線描画。
[現在位置-ニコX,ニコY]へ「😊」を文字描画。
移動距離を1増やす。
動体を判定した時
判定中なら負け
もしI>閾値ならば:
もし、動作モード=判定中ならば、
動作モード=待機中。
メインへ描画開始。
[現在位置-ニコX,ニコY]へ「😭」を文字描画。
ブブーをオーディオ再生。
モニターの「高さ」に「{ビデオ高さ/2}px」をDOMスタイル設定。
モニター.可視=オン。
1秒待つ。
「動いた!{改行}あなたの負け~🤪」と言う。
終了処理。
負けを判定した時は、証拠写真を提示します。
このためだけに、動体検知のモニター部分を残していましたw
移動中ならすすむ
違えば、もし、動作モード=移動中ならば、
メインへ描画開始。黒色に線色設定。5に線太さ設定。
[0,画面高さ/2,画面幅,画面高さ]の描画クリア。
現在位置を1減らす。
[線X,ニコY]から[現在位置,ニコY]へ線描画。
[現在位置-ニコX,ニコY]へ「😊」を文字描画。
移動距離を1増やす。
移動中に300px進んだら勝ち
もし、移動距離≧300ならば:
動作モード=待機中。
[現在位置-ニコX,ニコY]へ「😆」を文字描画。
[0,0,画面幅,画面高さ/2]の描画クリア。
[60,60]へ「おめでとう!」を文字描画。
[60,100]へ「🎉🎊🎉🎊」を文字描画。
おめをオーディオ再生。
1秒待つ。
「タッチ!{改行}あなたの勝ち🎉」と言う。
終了処理。
これを作っていて気づいたんですが、勝ち負けを判定した時に音を鳴らすようにしたんですが、編集画面では鳴っていた音が、なんと投稿後のサンドボックス画面では鳴らないんですよねー💧️
音を鳴らしたい人は、編集画面にして実行してみてくださいぃ~。
10日のアレも、投稿後はピッピ鳴っていなかったはずですが、気づいていませんでした😅️
2025/12/16 修正していただけました!
できました!
「だるまさんがころんだ」の表示スピードがランダムに変化したりすると、もっと難易度が上がって面白いかな?