2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

カメラを使って「だるまさんがころんだ」ゲームを作るよ!

2
Last updated at Posted at 2025-12-13

 10日目の記事でフレーム間差分法での動体検知を試し、背景差分法について言及しました。

 でも背景差分法を実際やってみたところ背景に設定した画像と現在のフレームを比較するという、フレーム間差分法よりも簡単なお仕事で、特に書くべき内容は発生しなかったです😅
 そしてそれ以上の方法となるとワタクシの知恵と時間が不足💧

 むしろ、今あるプログラムを使って何か面白いこと出来ないかな~と考えた結果、「だるまさんがころんだ」ゲームを作ってみることにしました。
 やっぱなんかゲームっぽいもの作りたい。

だるまさんがころんだとは

 鬼が後ろを向いて目隠しし「だるまさんがころんだ」と言っている間に子は鬼に近づき、「だ」で鬼が振り向いたら子は動きを止めます。
 これを繰り返して、動いているところを見つかった子は鬼に捕まり、見つからずに鬼のところまで到達してタッチできたら子の勝ち、という遊びです。

ゲーム内容

  • 動体検知を使って、カメラの前でユーザーが動くことで前に進んだこととする。
  • 実際の遊び同様に「だるまさんがころん」まではいっぱい動いて歩を進める。
  • 「だ」で動きを止めて、一定時間動体検知されないようにする。
  • 検知されたら負け、うまく回避して規定の距離を進むことができたら勝利とする。

プログラムの内容

  • 動体検知自体は10日の記事のものをそのまま流用。

  • 動体検知のタイマーの中で、「だるまさんがころんだ」を一文字ずつ遅延表示。

  • 移動中と判定中のフラグを作り、動体検知した際の処理を分ける。

  • 「だるまさんがころん…」までは移動中、最後の「だ」で判定中のフラグを立てる🚩

  • 移動中は、動体を判定するごとにキャラを1ピクセル進める。

  • 判定中は、動体検知したら負け。

  • 3秒間ほど動体検知がなければ、移動中に戻して、再び「だるまさんがころんだ」を一文字ずつ遅延表示。

  • 最終的に300進んだらユーザーの勝ちとする。(300pxは画面的にも実際にやってみた回数的にも程よい感じでした)

  • カメラを使うけど画面上にはカメラの映像を表示しない。

ビデオ.可視=オフ

 オブジェクトプロパティ構文が神~👼️
 実際のプロパティは、「visibility」に「hidden」を、なのですが、v1と同じようにオンオフで設定できるようになっているんです👍️

「だるまさんがころんだ」の文字遅延表示

テキスト「だるまさんがころんだ」
描画テキストテキスト文字列分解

# タイマーの中
        もし(動作モード移動中)かつ(T0.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 修正していただけました!

できました!

 「だるまさんがころんだ」の表示スピードがランダムに変化したりすると、もっと難易度が上がって面白いかな?

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?