ゲームに制限時間を設ける方法を考える
今回は、時間に制限を設けて、ゲームをメリハリをつけることにしましょう。
なお前回は猫とコウモリがぶつかったら、ぶつかった最初のみに得点を増やしました。
さて、制限時間を設けると、状態としては、
☑️『制限時間の開始前』
☑️『制限時間中』
☑️『制限時間の終了後』
の3つがあります。
- 制限時間の開始前:色々な最初にすること、例えばゲームの説明とか変数を適切な値にする状態。
- 制限時間中 :猫やコウモリが動き、ぶつかったら得点が入る状態。ゲーム中。
- 制限時間の終了後:猫やコウモリが止まり、得点が決定した状態。ゲーム終了。最高得点になったとか、その時の名前の入力などを行っている状態。
この状態の移り変わりから『制限時間の始まり』と『制限時間の終わり』があるということになります。
- 制限時間の始まり:猫やコウモリが動き出し、ぶつかったら得点が入る。
- 制限時間の終わり:猫やコウモリが止まり、得点が変化しない。
いまのスクリプトは、すべてを動かすには、”旗”をクリックすることになっています。
また、すべてを止めるには”旗”の右にある”●”をクリックすることにしています。
これから考えると、『制限時間の始まり』には、『”旗”をクリックすること』と同じことができればいいと分かります。
同様に『制限時間の終わり』には、『”●”をクリックすること』と同じことができればいいと分かります。
「”旗”をクリックされたとき」に似たものを探す
まず、『”旗”をクリックすること』について考えると、”旗”をクリックすると「”旗”がクリックされたとき」につながったスクリプトが順に実行されていきます。
つまり、「”旗”がクリックされたとき」に似ているもので、制限時間の始まりを伝えてあげればいいことになります。
探してみると「イベント」の中にある「[メッセージ1▼]を受け取ったとき」というのが、似ています。
これは、その下にある「[メッセージ1▼]を送る」というのが、”背景”や”スプライト”のどれかから実行されたら、すべての”背景”と”スプライト”に対してメッセージが届く。
この「[メッセージ1▼]を受け取ったとき」につながったスクリプトが実行されていきます。
つまり、「”旗”がクリックされたとき」を「[メッセージ1▼]を受け取ったとき」に置き換えて、”旗”をクリックする代わりに「[メッセージ1▼]を送る」を実行すればいいことになります。
『”●”をクリックすること』と同じことをするには?
『”●”をクリックすること』と同じことをするものを探すと、「制御」の中にある「[すべて▼]を止める」というのがあり、これを実行すると、すべてを止めることができます。
制限時間を計るには?
これで、「[メッセージ1▼]を送る」を実行して、制限時間にあたる時間を待って、「[すべて▼]を止める」を実行すれば、いいことになります。
では、『時間を待つ』というのはどこにあるのでしょうか。
。。。ないですね。
その代わり、「制御」の中に「< >まで待つ」というのがありますので、待つことはできます。
あと、時間が分かり、制限時間内かどうかが、分かればいいです。
時間については、「調べる」の中の「タイマー」が0.1秒単位でカウントされるので分かります。
なお、この「タイマー」は、次のときにリセットされて 0 から始まります。
- SCRATCHを起動したとき
- “旗”をクリックしたとき
- 「タイマーをリセット」を実行したとき
制限時間内かどうかを調べるには、前回出てきた「演算」の中の<[ ]<[ ]>等を使えばできそうです。
では今回は、この中から「[すべて▼]を止める」を実行して実際に止まるか実験してみましょう。
実際止まるか実験するための前準備
(1)前回まで作成したスクリプトやスプライトを保存したファイルをダブルクリックして開きます。
(2)「スプライト1」になっていることを確認します。
(3)「スクリプト」になっていることを確認します。
「[すべて▼]を止める」を実行して実験してみる
(4)「制御」をクリックします。
(5)”旗”をクリックして、猫やコウモリを動かします。
(6)適当なところで「[すべて▼]を止める」をクリックします。
どうでしょうか。
猫やコウモリが止まったでしょうか。
今回はここまで。
次回をお楽しみに。
☆前回は、猫とコウモリがぶつかった最初だけ、得点を増やすことを書きました↓
☆次回は、制限時間を設けて、制限時間まで待つをやりますよ↓
sammyの相方です。
時たま出てくることがあります。