カテゴリー
Scratch メンター雑記

「○秒後」に使うのはタイマー?変数?

こんにちは。メンターのかもやです。

先日のDojoは全員がオンラインでの参加というめずらしい形での開催でしたが、みなさんが作った作品やアイデアを見せてもらって「やっぱり何かを作るのは楽しいなあ!」とあらためて思いました。

ニンジャのみなさんにとっても、大人にとっても初めてのことばかりで大変なときですが、そんな中でも何か人が楽しめるものができたらと思ってまたゲームを作ってみました。

スペースキーをおすとゲームが始まり、画面に”Go!!”という文字が出たらすばやくFキーをおしてください。

てきが動き出すより早ければ勝ち、おそければ負けです。”Go!!”の文字が出る前にキーをおすとお手つきになり、3回お手つきでゲームオーバーになります。

まずはあそんでもらって、その後いつものようにどうやって作ったかを説明していきましょう。

「時間がたつと」動き出すプログラム

今回ぼくが作ったプログラムでは、ゲーム開始から”Go!!”の文字が表示されるまでてきが動き出すまでの2か所で決められた時間がたったら動く命令を書いています。

では、てきが動き出すまで待つ部分のブロックを見てみましょう。

○○まで待つ、というブロックの中にタイマーというものがありますね。このタイマーというブロック、見たことはあるけれど使い方がよくわからないという人もいるのではないでしょうか。

そこでためしに、Scratchでプロジェクトを作って、タイマーの横にある白い□をクリックしてみてください。

すると、大きな画面のはしに数字が出てきて、すごい早さで数字がふえていくのがわかると思います。

Scratchのタイマーは、プログラムが始まったと同時に動き出し、時間がたつごとにどんどん数字がふえていくものです。

ぼくが作ったプログラムでは、これをつかっててきが動き出すまでの時間をはかっているのですが、タイマーはプログラムが始まったと同時に動き出しているので、あそぶ人がゲームを始めてからは何秒たっているかがわかりません。

そこで、タイマーの数字を見る前にタイマーをリセットし、そこからの時間をはかることで、てきが動き出すタイミングをちょうせつしています。

「○秒後」はタイマーでなくても表現できる!?

先ほどのブロックではわかりにくい部分もあったと思うので、もう少しかんたんなプログラムを見てみましょう。

これは2つのスプライトが、プログラムが始まってから10秒後に「こんにちは!」とあいさつするだけのかんたんなものです。

やっていることは2つともほぼ同じなのですが、ひとつはタイマーを、もうひとつは変数を使っています。まずはタイマーを使った例から見てみてください。

すごく短いですね。一方、変数を使った例はこんなかんじです。

変数はタイマーとちがい、自動的に数字が変わったりはしてくれないので、1秒に1回数字をへらして同じような動きをするようにしています。

2つのちがいが分かれば、ちがったおもしろさが作れる!

この2つをくらべてみてどう思いましたか?「タイマーを使ったほうがかんたんに書けるから、タイマーのほうがいいじゃん!」と思った人もいるかもしれませんね。

たしかにタイマーのほうがブロックの数は少なくて書くのはかんたんですが、もし作りたいものが「せいげん時間が1分(60秒)のゲーム」だとしたらどうでしょうか?

数字が1つずつへっていく変数の方が見る人にわかりやすいし、「時間がどんどんへっていく!どうしよう!」とドキドキしてくれそうだと思いませんか?

それに、変数はタイマーとちがって、中身を自由に変えることができます

なので、たとえば「アイテムをとるとせいげん時間がふえる」とか、「てきのこうげきをうけると時間がへる」といったアレンジも変数のほうがやりやすいでしょう。

じゃあタイマーは役に立たないの?というと、もちろんそんなことはありません。

たとえばぼくの作ったプログラムのように、0.何秒のような小さな数字を使いたい場合は、変数で書いたような例よりも、タイマーを使った例のほうがわかりやすく書くことができます。

ほかにも、はじめはてきが1体しかいないところから始まって、きめられた時間がたつごとにてきが2体、3体とふえていくようなゲームなら、タイマーのほうがやりやすいでしょう。

自由に中身を変えられるけど、変える内容を書かないといけない変数

自動で数字がふえるけど、リセットしかできないタイマー

2つのちがいを考えながら、新しいプログラムや、今まで作ったプログラムのアレンジにチャレンジしてみてくださいね!