この記事のポイント
タイマーの使い方がわかります。
はじめに タイマーを使ってよりゲームらしくしよう
前回の記事において、オリジナルスプライト「ろぼてく」を追加してよりゲームらしくすることができました。ただ今のままでは、ろぼてくはずっとスクラッチキャット君とピコ君から逃げなければいけません。
ゲームらしさをもっと出すためには「ゲームクリア」の条件がないといけません。
ゲームクリアがないと面白くないですもんね。
この記事では、「タイマー」を使って、10秒逃げ切ったらゲームクリアとなるようにプログラムしてみます。これでよりゲームらしさを高めることができます。
前回の記事
前回はオリジナルスプライトのつくり方を説明しました。
スクラッチは以下リンクから始めることができます。完全無料です。
完成作品
完成作品はこのようになります。緑の旗の「実行ボタン」を押して遊んでみてください。画面左下にホイッスルのキャラクター「レフェリー君」が追加されています。
プログラムが開始すると、レフェリー君がカウントを始めて、ろぼてくが10秒逃げ切ると「ゲームクリア」と言ってくれます。
完成スクリプト(プログラム)
今回の完成スクリプト(プログラム)はこのようになります。レフェリー君を追加して以下のプログラムを追加します。ほかのスプライトのスクリプトには修正を加えません。
タイマーを表示させてみる
まずは、タイマーを画面に表示させてみましょう。これはとても簡単です。
- 調べるパレット(カテゴリー)をクリックします。
- 「タイマー」ブロックのチェックボックスをクリックして、チェックを入れます。
すると、ステージ画面の左上にタイマーが出現します。タイマーはチェックボックスにチェックをいれてからずっと動きます。
ただしこのままでは、タイマーが表示されているだけなので、ゲームクリアの処理はまだできていません。
スプライトに時間をカウントさせる
スプライトを追加する。
せっかくなので、新しいスプライトを追加して、そのスプライトにカウントをさせるようにしましょう。では以前スプライトを増やしたように画面右下の「スプライトを選ぶ」をクリックしましょう。
今回はゲームの時間を測定するためのキャラクターなので、審判を選びましょう。ちょうどよさそうなのは「Referee(レフェリー)」君です。スポーツのカテゴリーにいます。
大きさは50にしておきましょう。
スプライトにタイマーをカウントさせる
ではレフェリー君に時間をカウントしてもらいましょう。まずは以下のようにレフェリー君のスクリプトを組んでください。
- 「ずっと」ブロックの中に、「〇と言う」ブロックを入れます。
- 「〇と言う」ブロックに「タイマー」ブロックをはめます。
では、実行ボタンを押してみましょう。レフェリー君がタイマーをカウントするようになりました。
レフェリー君がカウントしてくれるようになったので、左上のタイマー表示は不要ですね。ブロックリストのタイマーのチェックを外しておきましょう。フィールド画面の左上のタイマー表示が消えましたね。こうしてもレフェリー君はカウントを続けてくれますのでご安心ください。
カウントに「秒」を追加する
この状態ではカウントがただの数字なので少しわかりづらいですね。レフェリー君に「1秒」「2秒」のようにカウントしてもらえるようにしましょう。
このようにスクリプトを組んでください。
- 「タイマー」ブロックを「〇と〇」ブロックに変更します。
- 「〇と〇」ブロックの1つ目の〇に「タイマー」ブロックをはめます。
- 「〇と〇」ブロックの2つ目の〇に「秒」を入力します。
すると、このようにレフェリー君がしっかり「秒」までカウントしてくれるようになりました。
整数だけを表示する
レフェリー君が小数点までカウントしてくれていますが、ちょっと細かすぎですね。ここでは、レフェリー君に整数(整数)だけカウントしてもらうように変更します。
このようにスクリプトを変更してください。
- 「タイマー」ブロックを「〇と絶対値▽」ブロックに変更します。
- 「絶対値▽」を「切り上げ▽」に変更します。
- 「〇に切り上げ▽」ブロックの〇に「タイマー」ブロックをはめます。
これでレフェリー君がイイ感じにカウントをしてくれるようになりました。
時間がたったらゲームをとめる
次に時間がたったらゲームクリアとなるようにしましょう。
このようにスクリプトを組んでください。
- 「ずっと」ブロックを「〇まで繰り返す」ブロックに変更します。
- 「〇まで繰り返す」ブロックに「〇>〇」ブロックをはめます。
- 「〇に切り上げ▽」ブロックの1つ目の〇に「タイマー」ブロックをはめます。
- 「〇>〇」ブロックの2つ目の「10」を入力します。
- 「〇まで繰り返す」ブロックの下に「すべてを止める▽」ブロックを追加します。
レフェリー君が10秒のカウントを終えるとすべてのスプライトが停止するようになりました。
さいごの仕上げ
では最後にゲームの見た目をもう少し整えましょう。整える内容は次の点です。
- 実行ボタンが押されたら、レフェリー君が「スタート!」と言う。
- 10秒のカウントが完了したら、レフェリー君が「ゲームクリア!」と言う。
ここまで学習してきた皆さんなら簡単ですね!自分でチャレンジしてみるのもよいと思います。
自分でできたでしょうか?このようにスクリプトを組めばOKです。
- 「〇と〇秒言う」ブロックを「旗が押されたとき」ブロックの下に追加します。
- 「〇と〇秒言う」ブロックの1つ目の〇に「スタート!」を入力します。
- 「〇と〇秒言う」ブロックの2つ目の〇に「1」を入力します。
- 「〇と〇秒言う」ブロックを「〇まで繰り返す」ブロックの下に追加します。
- 「〇と〇秒言う」ブロックの1つ目の〇に「ゲームクリア!」を入力します。
- 「〇と〇秒言う」ブロックの2つ目の〇に「1」を入力します。
これでゲームスタートとゲームクリアをレフェリー君がお知らせしてくるようになりました。
今回はかなり多くのプログラミングをしました!皆さんのプログラミング能力もかなり上がってきたのではないでしょうか?
【小ネタ】条件付き繰り返し
今回使った「〇まで繰り返す」は、実際のプログラミングでは「条件付き繰り返し」と呼ばれるものになります。この「条件付き繰り返し」はプログラミングで最も使う重要な機能となります。
例えば、以下のようなところで使われたりします。
- エクセルで「1から10列(条件)」までの数字を「順々に足していく(繰り返し)」
- 自動販売機で「何かのボタンが押される(条件)」まで「商品を出すのを待ち続ける(繰り返し)」
もちろんスクラッチでのプログラミングでもかなり頻繁に使われる機能となるのでぜひマスターしてください。
次回
工事中です。ぜひお楽しみに!
コメント