【Scratch】<入門編>3-3 タイマーとストップウォッチを作ろう!(時間制限)

・「タイマー」ブロックの使い方
・ストップウォッチとタイマーの作り方
・時間制限(カウントダウン)の作り方 など
こんにちは、Anksです。今回もみなさまよろしくおねがいします。
前回 <入門編>3-2 足し算・引き算ゲームを作ろう!(変数/演算/乱数) に引き続き、
「変数」と「タイマー」のブロックを使いながら、時間に関するプロジェクトを作っていきたいと思います!
まずは、「タイマー」ブロックについて理解していきましょう。

○「タイマー」ブロックとは

「タイマー」ブロックは、「調べる」欄の中にあるブロックで、
スクラッチを起動した瞬間に0からスタートして、時間の経過を測っている値を持っているブロックになります。

【Scratch】スクラッチ タイマーのブロック.

試しに、タイマーブロックの横のチェックボックスをオンにしてみてください。

すると、
変数と同じように、タイマーの値が画面上に表示されて、
値がどんどん増えていってるのがわかりますか?

【Scratch】スクラッチ タイマーのチェックボックスをオン

↓↓

【Scratch】スクラッチ タイマーの値が増えていく

実は、タイマーはプログラムが動いていない間でも、勝手にずっと動いて増え続けています。

「すべてを止める」ブロックでも、赤丸を押しても、増えるのを止めることができませんが、

旗のボタンを押すか、「タイマーをリセット」のブロックを使うことで、値を0に戻すことができる仕組みになっています。

 

まずは、この「タイマー」ブロックを使って、簡単なストップウォッチを作ってみましょう。

○簡単なストップウォッチを作る

まずは、完成させるプロジェクトを見てください。

旗のボタンを押すと、ねこが「スペースキーを押してね。もう一度押すと止まるよ。」と教えてくれていますね。

(背景を「Party」に設定していますが、スプライトや背景はお好きなものを選んでいただければと思います!)

今回は、
スペースキーを押すとスタートして、もう一度押すとストップウォッチが止まり、
タイムが計測できる、というものを作っています。

「タイマー」は数値が増えるのを止めることが出来ないので、代わりにスプライト(ねこ)が時間を教えてくれるストップウォッチを作っていきましょう!

 

まずは、最初のセリフの部分を用意します。
【Scratch】スクラッチ ストップウォッチスタート時のセリフ

スペースキーを押したときにストップウォッチがスタートするので、旗が押されたときのスクリプトは今回これだけです。

 

ちなみに、ねこのセリフが少し長いですが、

お子さまがタイピングにまだ慣れていない場合は、
「ローマ字入力表」を手元に用意しておくと良いと思います!

当サイト外にはなりますが、
こちらのページにカラフルなローマ字入力表がありますので、ぜひ印刷して活用してみてください。
Anksが製作・提供させていただいた簡単なタイピングゲームもありますよ。笑

 

話を戻しまして、次に、スペースキーが押されたときのスクリプトを作っていきましょう。
【Scratch】スクラッチ スペースキーが押されたときのブロック

「スペースキーが押されたとき」のブロックは、イベント欄内にあります。

スペースキーを押したときにストップウォッチがスタートするので、ここでまず「タイマーをリセット」すればよいですね。

【Scratch】スクラッチ スペースキーが押されたらタイマーをリセット

そのあとは、スペースキーがもう一度押されるまで、ねこにタイマーの値を言い続けて欲しいのですが、

どうすれば良いでしょうか?

 

「ずっと」&「もし~なら」ブロックを使うという案もすぐ浮かびますが、
ここでは、よりシンプルな方法として、「~まで繰り返す」のブロックを使ってみましょう!

【Scratch】スクラッチ まで繰り返すブロック

「~まで繰り返す」ブロックは、「制御」欄の中にあります。

条件が成立するまでは、中身のブロックが繰り返し実行されるので、
今回のケースでは、
「スペースキーが押された」まで「タイマーと言う」ように使うことができます。

【Scratch】スクラッチ スペースキーが押されたまでタイマーと言う

これを、先ほどの「タイマーをリセット」の下に繋げればいいのですが、、、
もう一つ追加するブロックがあります。

【Scratch】スクラッチ スペースキーが押されたではないまで待つ

実は、<入門編>3-1りんごを数えてもらおう!でマウスをクリックしたときと同じように、
「スペースキーが押されたではないまで待つ」(図の②)を追加しないと、

スペースキーを押した途端に、図の①も③も条件が成立して実行されてしまい、スクリプトがそのまま終わってしまいます。

そのため今回も、「スペースキーを押されたではないまで待つ」を追加することで、
スペースキーを一度離してから二度目のスペースキーで③が判定されるようになっている、
というわけです。

Anks
「~が押された」ブロックを使ったときにうまく動かないときは、「~が押されたではないまで待つ」が使えるかどうか思い出してください!

 

ひととおりブロックの配置が終わったら実行してみましょう。

無事、スペースキーでストップウォッチがスタートして、もう一度押せば止まるようになっていれば完成です!

【Scratch】スクラッチ ストップウォッチの完成画像

なお、「タイマーと言う」ブロックを使ってタイムを表示する方法以外にも、

新しく、「時間」という名前の新しい変数を作り、「時間をタイマーにする」という形でブロックを追加すれば、変数としても表示することが可能です。

【Scratch】スクラッチ ストップウォッチ セリフと変数で同時表示

○タイマー(時間制限)の作り方

次に、時間をカウントダウンして測るタイマーを作っていきましょう。

旗のボタンを押すと、ねこが「何秒はかる?」と聞いてきますので、
秒数を答えるとスタートします。
(背景は「Light」に設定しています。効果音が出ます。)

スプライト(ねこ)のカウントダウンが0になると、ニャーの鳴き声とともに「終了!」と言います。

このタイマーをふた通りの作り方で作っていきましょう!

○「タイマー」ブロックを使う場合

まず、ねこが秒数を聞く部分から作りましょう。

【Scratch】スクラッチ タイマー作り、秒数を聞く部分

「何秒はかる?と聞いて待つ」を置き、秒数を答えたタイミングがスタートになるので、
すぐ下に「タイマーをリセット」のブロックを追加します。

タイマーを0にした後は、
制限時間(答えた秒数)を超えるまで、ねこに残り時間を言い続けて欲しいので、
ストップウォッチのときと同じように、「~まで繰り返す」のブロックが使えそうです!

【Scratch】スクラッチ タイマー作り、カウントダウン部分

「タイマー>答え」まで繰り返す、
となっている部分の「>」は、「不等号」と言い、

演算欄にふたつの不等号のブロック(「>」と「<」)があります。

【Scratch】スクラッチ 不等号ブロックの意味

ここでは、「タイマー」>「答え」となっているので、

「タイマー」が「答え」より大きくなるまで、
ねこが残り時間(「答え」ー「タイマー」)を言い続ける、ということになります。

Anks
「>」と「<」の向きで、どちらが大きいか表しているので、間違えないように注意しましょう!

最後に、「終了!」と言い「ニャー」の音を鳴らすようにすれば、
指定した秒数を測るタイマーが完成です!

【Scratch】スクラッチ 終了とニャーの音を鳴らす追加

○変数を使う場合

「タイマー」ブロックは、自動で数値が増えて便利なぶん、リセットしかできず、
自由に値を変えたり止めたりできないという使いづらさもあります。

そこで、「タイマー」ブロックを使わずに変数だけで作るパターンを紹介します!

【Scratch】スクラッチ 変数でタイマーの完成後

まず、新しく「残り時間」という名前の変数を作り、

【Scratch】スクラッチ 変数「残り時間」をつくる

この「残り時間」をカウントダウンしていって、0になったらタイマーが終了、という仕組みにしていきます。

 

【Scratch】スクラッチ タイマー作り、秒数を聞く部分(変数の場合)

最初に、先ほどと同じように、最初に「何秒はかる?」と聞き、
変数「残り時間」を答えた秒数にセットしましょう。

 

そして、0になるまで、この「残り時間」をどんどん減らしていくプログラムを組み立てます。

ここでも、「~まで繰り返す」のブロックが使えそうですね!

【Scratch】スクラッチ タイマー作り、カウントダウン部分(変数の場合)

カウントダウンの仕方は、「1秒待つ」のブロックを利用します。

残り時間=0になるまで、

1秒待つ→残り時間を-1ずつ変える(=1減らす)→1秒待つ→・・・・

を繰り返すことによって、残り時間がどんどん1秒ずつ減っていく、という仕組みですね。

 

この後に、「終了!」と言い「ニャー」の音を鳴らせば完成です!

【Scratch】スクラッチ 終了とニャーの音を鳴らす追加(変数のパターン)

「変数」を使ったパターンでもうまくタイマーが作れたと思います。

なお、完成後のプロジェクトはこちらになります。

最後に、同じ仕組みで時間制限をゲームに導入するスクリプトを紹介します!

○時間制限のスクリプト

ゲームの時間制限では、あらかじめ秒数を決めておくことがほとんどだと思います。

そこで、今作ったタイマーのスクリプトをこのように変更しましょう。

【Scratch】スクラッチ 時間制限導入のスクリプト

旗が押されたときに、変数「残り時間」にゲームの制限時間の秒数をセットします。

そして、カウントダウンが進み、
残り時間が0になったら、最後の「すべてを止める」ブロックで、プロジェクト全体のスクリプトが止まるので、
ゲームを自動で止めることができる、という流れです。

 

シンプルな仕組みですが、変数を使っているので、
例えば、
「ゲーム中にアイテムを取ったら残り時間が10秒増える」というようなことも可能になったりします。

 

今回のチャプターはここまでになりますが、
次回は、入門編の総まとめとして、時間制限も導入したゲームを作っていきます!

今回もありがとうございました。

→次回 <入門編>3-4 フルーツをキャッチするゲームを作ろう!(スコア/得点表示)に進む