このコーナーではこれまでに、いくつか簡単なゲームを作ってきました。今回は、複雑なプログラムを組む際に組み合わせて使うことの多い機能について紹介します。
今回のテーマは「時間制御」です。決まった時間に達するとアクションを起こしたり、制限時間を設けて獲得した点数を計算したりと「時間による制御」は様々なプログラムで必要となります。スクラッチで時間を制御する方法は大きく2通りあるのですが、この2通りの方法を使ったカウンターの作り方と特徴について解説します。
今回のポイント
【1】方法その1:[タイマー]ブロックを使う
1つ目の方法は、スクラッチの[タイマー]ブロックを使う方法です。
「調べる」カテゴリーの中に[タイマー]ブロックがあり、チェックボックスにチェックを入れるとステージにタイマーが表示され、利用できるようになります。
この[タイマー]ブロックの特徴は次の通りです。
メモ:スクラッチの[タイマー]ブロック
- 画面を読み込んだ時に自動でスタートし、時間を測定し続けます。
- 時間は秒単位、小数点第3位まで表示されます。
- [タイマーをリセット]ブロックを使うことでタイマーの値を0に戻すことができます。
【2】方法その2:[○秒待つ]ブロックを使う
2つ目は[○秒待つ]ブロックを使う方法です。
「Aを実行した後、一定の時間がたったらBを実行する」というふうに、命令と命令の間に一定の時間をあけるときに使います。
下記の場合は x座標=0 y座標=0 地点に移動した後に10秒経つと「こんにちは!と言う」が実行されます。
【3】2種類の「10秒カウンター」を作ってみよう
スタートボタンを押すと寝ているハリネズミが「1、2、3…」とカウントし、10秒経つと目を覚まして「10秒!」と教えてくれるプログラムを作ります。ハリネズミを2個用意して、同じプロジェクトの中に、2種類の10秒カウンターを作ります。
(3-1) スプライトを2つ用意する
ハリネズミのスプライトを2つ作り、「ハリネズミ1」「ハリネズミ2」という名前にします。それぞれのスプライトには2個のコスチューム「寝ている」と「起きている」を設定します。
次の図はスプライトの一覧から「Hedgehog(ハリネズミ)」を選んで、コスチュームを2個だけにして色を変更したものです。
(3-2) ハリネズミ1:[タイマー]ブロックを使って10秒カウントするプログラム
「ハリネズミ1」のスプライトには、[タイマー]ブロックを使ったカウンターのプログラムを作成します。
まずは緑の旗が押された時、つまりプログラムの開始時の初期設定をします。「位置」「大きさ」「向き」「コスチューム」を指定します。また、[タイマーをリセット]ブロックで、スクラッチのタイマーの値をゼロにします。
タイマーの値が10を超えるまで(すなわち10秒経過するまで)タイマーの値をはりねずみ1が言うようにします。
[○と言う]ブロックに[タイマー]を入れてもよいのですが、小数点第3位までの秒数が表示され、絶え間なく表示が変わる落ち着きのない表示になってしまいます。小数点を切り捨てるて表示するには[○の [切り下げ]] ブロックにタイマーを組み合わせて整数のみが表示されるようにします。
10秒が経過すると「10秒!」と言って「起きている」コスチュームに変わります。
(3-3) ハリネズミ2:[○秒待つ]ブロックを使って10秒カウントするプログラム
「ハリネズミ2」のスプライトには、[○秒待つ]ブロックを使ったカウンターのプログラムを作成します。
ブロックパレットの変数カテゴリーから「変数を作る」をクリックし、時間をカウントするための変数「ハリネズミ2の時間」を作ります。
OKをクリックすると新しい変数ができてブロックパレットに表示されます。
プログラムは次の図の通りです。
緑の旗が押された時の初期設定をします。コスチュームや位置などを設定し、変数「ハリネズミ2の時間」を0に設定します。これでカウンターが0になりました。
この後は1秒毎に「ハリネズミ2の時間」変数の値を1づつ増やしていくことを10回繰り返します。これで10秒を測定します。ハリネズミが秒数を吹き出しで表示するように[「ハリネズミ2の時間」と言う]ブロックを追加します。10回繰り返した後でコスチュームを変えて完了です。
2つのカウンターが完成しました。緑の旗でプログラムをスタートして動き方を確認してください。同じ10秒を測るプログラムですが、[○秒待つ]ブロックを使ったプログラムは、方法1の[タイマー]ブロックを使ったカウンターと比べてわずかに遅れていきます。
なぜ遅れるかというと[10回繰り返す]ブロックの内側に[1秒待つ]ブロックの他にもいくつかのブロックが入っているからです。実際には1秒より少しだけ長い時間が経ってから繰り返されているのです。
【4】今回のまとめ
今回は2通りの時間制御の方法をご紹介しました。
制限時間内にミッションをクリアする、一定の時間がたった時点で勝敗を決めるなど、時間制御はよく必要となる機能ですので、ぜひ使いこなして楽しいプログラムを作ってみてください。
伊東 けいこ
Web制作者&ライター。2017年よりオランダ在住。 サイト構築の傍らオランダにおける教育&テクノロジー、社会&テクノロジー周辺を追っています。
https://chari-kamo.com
コメント