脱出ゲームを改造しよう4
ひさびさの更新になってしまいました。
今回はカウントダウンタイマーを作成します。
時間切れになったらゲームオーバーになるように、今あるスクリプトにも手を加えますよ。
その前に、今までできたスクリプトのままだと、繰り返しプレイしたときに
リンゴやバナナの数が前回プレイした数に足されていきます。
これでは正しい得点が計算できないですね。なので、ゲームが始まったときに
「リンゴの数」「バナナの数」を「0ゼロにする」のスクリプトをステージにつくります。
では今度はカウントダウンするための変数を作成します。
名前は「残り時間」としましょう。これもステージにつくりましょう。
緑の旗がクリックされてゲームが始まったら180秒をセットしたいので
「緑の旗がクリックされた時」「残り時間を180にする」のブロックを
いれてあげましょう。
こうすることによって残り時間も毎回ゲームスタート時に180という数がセットされます。
では、ここからカウントダウンするための手順を考えてみましょう。
マイナスするタイミングは「1秒ごと」
変数「残り時間」から1をマイナスしたいので
「1秒待つ」を使いましょう。
りんごやバナナの数を増やす時には「(変数名)を1ずつかえる」を使いましたが、
減らしていくときにはどうしたらいいでしょうか?
実はこの「(変数名)を1ずつかえる」のブロックを使います。
1ずつ減らしたい時には「マイナス1」を入力します。なので
「1秒まつ」と「残り時間を-1かえる」を繰り返します。
では一度、ちゃんとカウントダウンをしてくれるか確認します。
180秒待つのは時間がもったいないので残り時間を今だけ5に変更して、
このスクリプトをクリックしてみましょう。
・・・カウントダウンはできましたが、残り時間が0以下になっても、
減らし続けてしまっています。
今回新しいルール「残り時間が0になったらゲームオーバー」が追加されるので、
このままではいけませんね。では「残り時間が0になったらゲームオーバー」になる部分の
スクリプトを追加しながら見ていきましょう。
残り時間が0になったタイミングで今までの「1ずつ減らすを繰り返す」という
プログラムの動きを変えたいので、なにか良い方法がないか考えてみましょう。
いつまで繰り返すか?「残り時間が0になるまで」です。
データのブロックパレットをみても「残り時間が0の時」というブロックはありません。
でも言い換えて「残り時間=0」の時・・・と考えると
「演算」のブロックパレットに「=」がありましたね。
このブロックの左側に変数「残り時間」右側に「0」を入れると「残り時間=0」
というブロックができました。
これでプログラムの流れを変えるタイミングは調べる事ができます。
制御ブロックのパレットを見てみましょう。
「○○まで繰り返す」のブロックを使うとうまくいきそうですね。
今までは繰り返しの回数を決めて動かすブロックを使いましたが
このブロックは「この条件の時まで繰り返す」という動きをします。
では、この「残り時間=0」のタイミングでどうしたいのか?
をこのブロックの下に作っていきましょう。
残り時間が0になったときはゲームオーバーにします。
そして、このプログラムにはゲームオーバーになときの動きがもう
作られていますよね?ゲームオーバーのスクリプトをもう一度確認してみましょう。
ゲームが始まったとき、このスプライトは隠れますが
メッセージ「ゲームオーバー」を受け取ったときこのスクリプトが動きます。
その内容はこのスプライトを「表示」させて「すべてをとめる」
なので、残り時間が0になったときもメッセージ「ゲームオーバー」を送れば、
あとのゲームオーバーの時のスクリプトが動き出してくれます。
ではステージのスクリプトに戻って「もし残り時間=0なら」のブロックの下には
「ゲームオーバーを送る」のブロックを入れておけば、あとの動作は
スプライト「ゲームオーバー」のスクリプトがゲームオーバーにするための動き
を引き継いでくれます。
では確認のために緑の旗をクリックして、きちんと残り時間が0でゲームオーバーになるか
確認していきましょう。
今度は残り時間が0でゲームオーバーのスプライトが表示されてすべてのスクリプトが止まりました。
次回はいよいよ、点数を計算するスクリプトを作成して完成です!
最近のコメント