「あなたの名前は何ですか?」に制限時間を設定する方法

ブロックの応用テクニック
Scratch星人
Scratch星人

スクラッチには「あなたの名前は何ですか?」という、相手の入力を取得出来る便利なブロックがあります。

しかし、入力を待ち続けるという特性から、制限時間を設けたクイズを作成する場合などには、少しコツがいります。

この記事では「あなたの名前は何ですか?」ブロックの一歩進んだ使い方を紹介しますので、最後まで見てみてくださいね!

ブロックの使い方

あえて説明する必要はないかもしれませんが、一応・・。

「あなたの名前は何ですか?」という質問と同時に、下に入力欄が現れます。
(もちろん、違う質問も可能です)

答えを入力すると・・・

その内容が「答え」という元からある変数に、一時的に格納されます。

入力された「答え」に応じて、表示される内容を変えることが出来るわけです。

クイズを作成してみる

答えが1なら「あたり」、2なら「はずれ」というクイズを作成してみました。

Scratch星人
Scratch星人

ここまではブロックの基本的な説明でした。

この記事の本題はここからですよ!

このクイズに制限時間を設定して、オーバーしたら「時間切れ!」などと表示してみたいと思います。

「自分で出来そう」と思ったあなたは、読むのを一旦ストップして、ぜひ自分でコードを作成してみてください。

制限時間のコード(間違いの例)

例えば上のようなコードを作成して、実行してみましょう。

何も入力しないまま5秒が過ぎたら「時間切れ」と表示させたいのですが、正しく動作しません。

入力をしたとしても以下のようになってしまいます。

  • 入力後に「あたりorはずれ」の表示が消えた時点で5秒経っていない場合、もう一度同じ質問をされる
  • 逆に5秒経過した場合は「あたりorはずれ」の表示の後に「時間切れ」と表示される

では、次のコードを試してみましょう。

  • 5秒以内に入力されたら「あたりorはずれ」と表示される
  • 5秒を過ぎて入力されたら「時間切れ」と表示される

こちらも、さきほどのコードよりはマシになった感じがしますが、やはり正しく動作しません。

原因を考えてみよう

間違った2つのコードを試してみましたが、どちらも、何かを入力しなければ次の処理に進みませんでした。

「あなたの名前は何ですか?」ブロックの後には、「と聞いて待つ」と続いています。

これが原因です。
「待つ」ということは、入力されるまで次の処理に進まないという意味を持つのです。

「コードを分ける」という考え方

1つのまとまったブロックでは思うような結果が得られませんでした。
そこで、思い切ってブロックを2つに分けてみました。

別のブロックから命令を出して「強制的に停止させる」というのが、上のコードの考え方です。

プログラミングにおいては「並列処理」などと呼んだりしますので、ぜひ覚えておきましょう。

まとめ

入力に制限時間を設定する方法について書きました。

今回の考え方は、元々知っていなければ、自分で答えに辿り着くのは、少し難しいかもしれません。

さらに、説明した以外の方法もあるかもしれません。
(他の方法を見つけたら、コメントで教えてくれたら嬉しいです!)

プログミングは、考え方ひとつで、やりたいことを実現できる場合があります。
様々なことを学んで、吸収して、どんどん成長していきましょうΣ੧(❛□❛✿)

コメント

タイトルとURLをコピーしました