Scratchで4択クイズを作ろう ②問題を出そう

記事内に広告が含まれています。

このページは、画像を見ながら順番にまねしていくだけでも進められるようにしています。
文章では、作り方の理由やプログラミングの考え方も補足しているので、気になる人はあわせて読んでみてください。

前回は出題する問題と選択肢、答えを設定するリストを作成しました。

今回はその中から1問目のクイズを出題するプログラムを作っていきます。

前回の記事はこちら:①問題と選択肢を用意しよう

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

バババ
バババ

解説の画像が見づらい時は、画像をクリックして拡大して見てね!

■■■スポンサーリンク■■■

クイズを出題するスプライトを用意する

始めに、問題を出題するスプライトを用意します。

好きなスプライト選びましょう。最初からいる「スクラッチキャット」を使っても大丈夫です!

スプライトの選択をクリック

ここで選ぶのは、問題を読んでくれるスプライトです。
問題を読んでほしいスプライトを自由に選びましょう。

スプライトの選択

何を選びましたか?
この記事では「Gobo」に問題を読んでもらうことにします。

問題を読むプログラムを作成する

このスプライトに問題を読むプログラムを作っていきます。

選んだスプライトをクリックしましょう。

問題を出すスプライトを選択

始めに「問題数」という変数を1つ作ります。この変数には、「今何問目か」という情報を設定します。

変数の中の『変数を作る』をクリックしましょう。

変数を作るをクリック

①変数名に「問題数」と入力しましょう。
②「すべてのスプライト用」を選択しましょう。
③「OK」をクリックしましょう。

問題数の変数の設定

これで「問題数」という変数が作成されました。
この変数を使って、始めに用意したスプライトに問題を読んでもらいましょう。

最初に「第1問!」のように今の問題数を言ってから問題文を読むようにしていきます。

見た目の中から『こんにちは!と2秒言う』というブロックをドラッグしましょう。

『こんにちは!と2秒言う』というブロックをドラッグ

演算の中の『りんごとバナナ』ブロックを2つドラッグしましょう。

「バナナ」に部分に片方の『りんごとバナナ』ブロックをはめ込んで、『りんごとりんごとバナナ』となっている状態にしましょう。

「バナナ」に部分に片方の『りんごとバナナ』ブロックをはめ込む

これを「第○問!」となるように、次のように変更しましょう。

  • 最初の「りんご」を「第」に変更
  • 2つ目の「りんご」の部分に「問題数」の変数をはめ込む
  • 最後の「バナナ」を「問!」に変更
「第○問!」となるように変更

これを、『こんにちは!と2秒言う』ブロックの「こんにちは!」の部分にはめこみましょう。

「こんにちは!」の部分にはめこむ

このままだと、「問題数」の変数に何も設定していないので正しく言ってくれません。

なので、「問題数」の変数の設定をします。

変数の中の『変数▼を1ずつ変える』ブロックをドラッグして、『第と「問題数」と問!と2秒言う』ブロックの上にくっつけましょう。
このとき、「変数▼」の部分を「問題数」に変更しましょう。

『変数▼を1ずつ変える』ブロックを上にくっつける

これで、この処理が実行されるたびに「問題数」変数の中身の数字が1ずつ増えていくので「第1問!」、「第2問!」のように言うようになります。

ただし、「問題数」変数をリセットしていないので、数字がどんどん増えていってしまいます。
これを防ぐために「問題数」変数をリセットする処理を追加します。

このスプライトに書いてもいいのですが、前回の記事で「背景1」にゲーム開始時のリストの設定を作っているので、変数やリストの最初の設定は「背景1」にまとめて書こうと思います。

Question
悩んでる人
悩んでる人

なんでわざわざ「背景1」に書くの?
面倒くさいからここに書いたらいいじゃん。

バババ
バババ

同じようなことをする処理をまとめておくと、どこで何をやっているか整理されてわかりやすくなるからです!

<解説>

スプライトが増えたり、プログラムの量が多くなると、少し修正しようと思った時や、後でプログラムを見返したときにどこで何をしているのか探すのが大変になります。また、修正漏れなどのバグが発生する確率も上がってしまいます。

作っているときはどこに何書いているか覚えているかもしれませんが、少し時間が経ってから見てみると、どこで何を書いていたか忘れているということが、よくあります。

似たような処理をまとめておくと、見る場所が明確になるため、探す手間やバグの確率も少なくすることができます。

最初は難しいと思いますが、同じようなことをしている処理をまとめて書けるようになると、きれいなプログラムが作れるようになるので、意識してプログラミングしてみてください。

①「背景1」をクリックしましょう。
②変数の中の『変数▼を0にする』ブロックをドラッグして『緑の旗が押されたとき』ブロックの下にくっつけましょう。
③『変数▼を0にする』ブロックの「変数▼」の部分を「問題数」に変更しましょう。

「問題数」変数の初期化

これで、緑の旗が押されるたびに「問題数」変数がリセットされるようになりました。

次は実際に問題を言う処理を作ります。

①問題を出題スプライトに戻りましょう。
②見た目の中の『こんにちは!と言う』ブロックをドラッグして一番下にくっつけましょう。

『こんにちは!と言う』ブロックを追加

変数の中の『リスト▼の1番目』ブロックをドラッグして『こんにちは!と言う』ブロックの「こんにちは!」の部分にはめ込みましょう。
このとき、『リスト▼の1番目』ブロックの「リスト▼」の部分は「問題」に変更しておきましょう。

『リスト▼の1番目』ブロックをはめ込む

『問題▼の1番目』の「1」の部分に、「問題数」変数をはめ込みましょう。

「問題数」変数をはめ込む

これで、問題を読む部分は完成しました。

初期設定後にメッセージを受け取ってから出題する

あとはゲームが開始されたときに動くようにするだけですが、『緑の旗が押されたとき』をくっつけると、正しく動かいことがあります。

なぜかというと、「背景1」のプログラムで『緑の旗が押されたとき』に変数やリストの初期設定をしています。この処理と問題を読む処理が同時に動くと、問題リストに問題文が設定される前に問題を出題することがあるためです。

これをちゃんと動くようにするために、「背景1」の初期設定が終わったらメッセージを送って、このメッセージを受け取って問題を出力するようにします。

「背景1」をクリックして、実装済みのブロックの一番下に、イベントの中の『メッセージ1▼を送る』をくっつけましょう。

『メッセージ1▼を送る』をくっつける

『メッセージ1▼を送る』ブロックの「メッセージ1」の部分をクリックして、「新しいメッセージ」をクリックしましょう。

「新しいメッセージ」をクリック

①新しいメッセージ名に「準備完了じゅんびかんりょう」を入力しましょう。
②「OK」をクリックしましょう

「準備完了」メッセージを作成

これで、「準備完了」というメッセージができました。

次は、このメッセージを受け取ったら問題が出題されるようにします。

①問題を出題するスプライトを選択しましょう。
②イベントの中にある『準備完了▼を受け取ったとき』ブロックを一番上にくっつけましょう。

「準備完了」メッセージの受け取り

これで、メッセージを受け取って問題を出題するプラグラムは完成です。

動作確認

最後に「緑の旗」をクリックしてちゃんと問題が出題されるか確認してみましょう。

問題が出題されるか動作確認

うまく動きましたか?

「第1問!」と言ったあとに、「問題」リストの1問目の問題が読まれていることを確認しましょう。

もし、うまく動かない場合はプログラムを見直してみて、この記事のプログラムとどこが違うのか探してみましょう。

まとめ

お疲れさまでした!
これで1問目のクイズをスプライトが読んでくれるようになりました。

スプライトの位置の調整などは最後にまとめてやりますが、自由に移動させても大丈夫です。

次回は、4択の選択肢を表示させるプログラムを作ります。

今回途中で説明した「同じような処理をまとめる」については、できるようになれば、きれいで見やすいプログラムを作れるようになるので、ぜひ意識しながらプログラミングしてみてください。

次の記事はこちら↓

③選択肢を表示しよう

Scratchで4択クイズを作ろう ③選択肢を表示しよう
Scratchで4択クイズのプログラミングの方法を画像付きで解説しています。今回は4択の選択肢の変数やスプライトを用意して、問題が読まれたあとに選択肢を表示するプログラムを作っていきます。

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

4択クイズを作ろうトップ記事

Scratchで4択クイズを作ろう
Scratchで4択クイズのプログラミングの方法を画像付きで解説しています。ゲームを作成しながらプログラミングを体験してみよう。

おすすめ

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

コメント

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