
前回は、クイズに答えて正解・不正解を判定する処理を作成しました。
前回までで、1問目のクイズを出して、答えて、正解・不正解を判定するという一連の流れが完成しています。
今回は、2問目、3問目と連続して最後の問題まで出題するプログラムを作っていきます。
前回の記事はこちら:④問題に回答しよう
4択クイズを作ろう トップ記事はこちら:Scratchで4択クイズを作ろうトップ記事

解説の画像が見づらい時は、画像をクリックして拡大して見てね!
次の問題を出題する
前回までで、1問目の正解メッセージ、不正解メッセージを送るところまで完成しています。
今回は、そのメッセージを受け取って次の問題を出題するようにします。
正解メッセージ、不正解メッセージを受け取ってプレイヤーに伝える
今は、正解メッセージ、不正解メッセージ送って終わりになっているので、画面を見ても正解なのか間違いなのかわかりません。
そのため、まずはメッセージを受け取って、正解、不正解を表示するようにしていきます。
まずは、正解メッセージを受け取ったときの処理を作ります。
正解のときに、「ピンポン!」のような音を出して、問題を読んだスプライトに「正解!」と言ってもらうようにしていきます。
①問題を読んだスプライトをクリックしましょう。
②イベントの中の『メッセージ▼を受け取ったとき』をドラッグしましょう。
③「メッセージ▼」の部分を「正解」に変更しましょう。

次に、正解のときに鳴らす音を探します。
①画面の上の方にある「音」をクリックしましょう。
②「音を選ぶ」をクリックしましょう。

正解したときに鳴らす音を選びましょう。
この記事では、「Doorbell」という音を選びます。

※選んだ音はそのままでも大丈夫ですが、少し編集しています。後ろの方をカットして、音量を小さくしています。
①音の中の『音▼の音を鳴らす』ブロックを『正解▼を受け取ったとき』ブロックの下にくっつけましょう。
②見た目の中の『こんにちは!と2秒言う』ブロックをドラッグしてくっつけましょう。
③「こんにちは!」の部分を「正解!」に変更しましょう。

これで、正解のときに音が鳴って、問題を読むスプライトが「正解!」と言うようになりました。
同じように不正解のときに音を鳴らして「残念!」と言うようにプログラミングします。
「残念!」と言うときに、正解も教えてあげるようにするため、「残念!正解は「A」でした」のように、クイズの正解も一緒に言うようにします。
不正解のときに鳴らす音を選んで、プログラミングしてみましょう。
もし、どういうふうにすればいいかわからない場合は、下のプログラムを見てまねしてください。
不正解のときのプログラムは下の画像のように書きます。

音は「Oops」を使っています。(音量を小さくして、うしろ少しカットしています。)
正解を言うところでは、「回答」リストから、「問題数」に入っている数字と同じ番号の答えを取り出して表示します。
これで、正解・不正解をプレイヤーに伝えるようになりました。
次の問題を出題する
2問目のクイズを出題するプログラムを作っていきます。
と言っても、クイズを出題するプログラムは既にできています。
1問目のクイズを出題するプログラムをそのまま使えばいいのです!

じゃあ、そのプログラムと同じものを、正解と不正解のプログラムの下に作ればいいんだね?

前回やったブロック定義を思い出して!
同じ処理ってことはまとめることができるよ!
まずは、既に作っている問題を出すプログラムをブロック定義を作って、そっちに移動させます。
ブロック定義の中の『ブロックを作る』をクリックして、ブロック名に「出題」と入力しましょう。
※今回は引数は使いません。

『準備完了▼を受け取ったとき』ブロックに書いている処理を『出題』定義に移動させましょう。


上の画像のように問題を出すプログラムを『出題』定義に移動させました。
次に、『出題』定義を呼び出すようにします。
1問目のクイズを出題するために、『準備完了▼を受け取ったとき』にブロック定義の中の『出題』ブロックをくっつけましょう。
また、2問目以降のクイズを出題するために、『正解▼を受け取ったとき』ブロックと、『不正解▼を受け取ったとき』ブロックの一番下に、ブロック定義の中の『出題』ブロックをくっつけましょう。

これで、クイズを連続で出題できるようになりました。
ここまでで、一回実行してみましょう。クイズが最後の問題で出題されるようになっていると思います。
もし、途中で止まってしまうなど、うまく動かない場合は、もう一度記事に書いてある処理とみくらべて、違うところがないかチェックしてみましょう。
クイズを全問出題したら止める

クイズは最後の問題まで出題できるようになったけど、最後の問題が終わっても空の選択肢が表示されるんだけど・・・?

プログラムは次の問題を出そうとしているけど、リストには何も設定されていないので、空の選択肢が表示されて、おかしな動きになってしまっています。バグなので直していきましょう。
おそらく、最後の問題のあと、下の画像のようにからの選択肢が表示されていると思います。

このバグを直していきます。
問題を出題するときに、もう問題がない場合は出題しないようにします。
①制御の中の『もし<>なら~でなければ』ブロックをドラッグしましょう。
②演算の中の『○>50』ブロックをドラッグして「<>」にはめ込みましょう。

問題数が「問題」リストの長さよりも大きくなったら、問題が全部終わったということなので、結果発表するようにしたいと思います。ただし、結果発表の処理は次回作成するのため、今回は「結果発表」メッセージを送るようにしておきます。
①『○>50』ブロックの「○」の部分に、変数の中の『問題数』をはめ込みましょう。
②「50」の部分に、変数の中の『リスト▼の長さ』をはめ込んで、「リスト▼」の部分を「問題」に変更しましょう。
③イベントの中の『メッセージ▼を送る』ブロックを「もし<>なら」の下に入れましょう。「メッセージ▼」には「結果発表」というメッセージを作って設定しましょう。

①『もし<>なら~でなければ』ブロックを『出題』定義の中の、『問題数▼を1ずつ変える』ブロックの下にくっつけましょう。
②『問題数▼を1ずつ変える』ブロックの下にある処理は、「~でなければ」ではさみこみましょう。

これで、クイズを全部出題し終わったら問題を出すのを止めるため、空の選択肢が表示されなくなりました。
まとめ
お疲れ様です!
これで、クイズを最後まで連続で出題できるようになりました。
次回は、クイズ終了後の結果発表をする処理を作っていきます。
用意したクイズを全部答えることができるようになり、だいぶ完成に近づいてきました。
次回で完成なので、最後も頑張っていきましょう!
次の記事はこちら↓

4択クイズを作ろう トップ記事はこちら↓

おすすめ
Scratchでのプログラミング学習におすすめの書籍です。
コメント