Scratchで〇×クイズを作ろう 発展編①問題をたくさん出そう
今回から発展編です。
発展編では、基本編で作った「1問だけ問題を出して答える」という「〇×クイズの土台」をレベルアップしていきます。
今回は、 基本編で作った「〇×クイズ」の土台を改造して、たくさん問題を出せるようにしていきます。
基本編は終わっていますか?
終わっていない場合、こちらからチャレンジしてみましょう↓
基本編① ゲームの設計図を作ろう
〇×クイズを作ろう トップ記事はこちら: 〇×クイズを作ろうトップ記事
今回やることを整理しよう
発展編①でどんなことをしていくのか整理していきます。
やりたいこと
今までは、問題が1問しかなかったので、今回はたくさんの問題を出せるようにしていきます。
「たくさんの問題を出す」ではあいまいなので、「問題を10問出す」ようにしていきましょう。
基本編では、下の画像のグレーの部分以外はすでに完成しています。
現在、「問題を出して答える」という部分はできていますが、問題文が毎回同じなので、繰り返すたびに問題文が変わるようにしたいです。『解説画面』に表示される解説文も問題に合わせて変えてあげる必要がありますね。また、問題文が変わることによって、正解・不正解の判定も変える必要があります。
やりたいことをまとめると↓のようになります。
・問題を10問出せるようにする。
・毎回違う問題を出せるようにする。
・問題の答えに合わせて、正解・不正解の判定が正しく行えるようにする。
・問題に合わせて解説文が変わるようにする。
改造する場所と内容
今回は下の画像の紫色の文字・点線の枠で囲まれた部分を改造します。
また、出題する問題の内容を毎回変えるので、正解・不正解の判定する処理も改造します。
具体的な改造するスプライトと改造する内容は次の通りです。
スプライト | 改造する内容 |
---|---|
問題文 | ・問題文を増やすためにコスチュームを10個作る ・出題する問題文を切り替えるプログラムを追加する |
マル | ・問題の答えを10個分用意する ・答えの判定を変更する |
バツ | ・答えの判定を変更する |
解説文 | ・解説文を増やすためにコスチュームを10個作る ・表示する解説文を切り替えるプログラムを追加する |
プログラミングしよう
改造する場所と内容が整理できたので、プログラミングしていきましょう。
問題文のスプライト
まずは問題文のスプライトを改造していきます。
改造する内容は次の通りです。
・問題文を増やすためにコスチュームを10個作る
・出題する問題文を切り替えるプログラムを追加する
コスチュームを10個作ろう
問題文を増やすために、コスチュームを10個に増やしていきましょう。
『問題文』のスプライトの「コスチューム」をクリックしましょう。
今は1つだけ問題文のコスチュームがあります。これを右クリックして「複製」をクリックしましょう。
そうすると問題文のコスチュームがコピーされました。
コピーされたコスチュームの問題文を書き換えて新しい問題文を作りましょう。
このやり方を繰り返して、問題を10個まで増やしていきましょう。もし、問題文が背景の白い箱からはみ出したりする場合は、背景のデザインも調整しながら行いましょう。
問題(コスチューム)が10個できたら完成です。
問題が10個も思いつかない場合は、ひとまず適当な文字を入力しておいて、あとで思いついたら書き換えても大丈夫です。
もし、そのようにする場合は、すべてのコスチュームの文字が同じにならないように少しずつ変えてください。すべて同じ文字だと、この後で問題を変えるプログラムを作るときに、きちんとコスチュームを切り替えられているのか分かりにくいからです。
出題する問題文を切り替えるプログラムを作ろう
用意したコスチュームを順番に切り替えて出題できるようにプログラミングしていきましょう。
まずは「出題した問題数」という名前の新しい変数を作ります。
「何問出題したか」という情報を、この変数に記録しておきます。
変数名に「出題した問題数」という名前を付けましょう。
この変数は他のスプライトでも使用するので、「すべてのスプライト用」を選んで「OK」をクリックしましょう。
これで、新しい変数ができました。
この変数を使ってプログラミングしていきます。
変数を初期化(リセット)する処理を作ります。
①イベントの中から『緑の旗が押されたとき』ブロックをドラッグしましょう。
②変数の中から『出題した問題数▼を0にする』ブロックをドラッグし、『緑の旗が押されたとき』ブロックの下にくっつけましょう。
これでゲームが開始されると、必ず「出題した問題数」の変数は「0」に初期化(リセット)されるようになります。
次に、問題文を切り替える処理を作ります。
①変数の中の『出題した問題数▼を1ずつ変える』ブロックをドラッグし、『背景が問題画面になったとき』の下にくっつけましょう。
②見た目の中の『コスチュームを[コスチューム名]▼にする』ブロックをドラッグして、『出題した問題数▼を1ずつ変える』ブロックの下にくっつけましょう。
③変数の中の『出題した問題数』をドラッグして、②で置いた『コスチュームを[コスチューム名]▼にする』ブロックの「[コスチューム名]▼」の部分にはめこみましょう。
最後に、問題は全部で10問なので、10問出したら終了するようにします。
④制御の中の『もし<>なら~でなければ』ブロックをドラッグして、『出題した問題数▼を1ずつ変える』ブロックの下にドラッグします。この時、『もし<>なら~でなければ』ブロックの「もし<>なら」と「でなければ」のあいだに、『コスチュームを出題した問題数にする』ブロックと『表示する』ブロックがはさまるようにしましょう。
⑤演算の中の『○<50』ブロックをドラッグして、『もし<>なら』の「<>」の部分にはめこみましょう。
⑥変数の中の『出題した問題数』をドラッグして、⑤で置いた『○<50』ブロックの「○」の部分にはめこみましょう。
⑦『○<50』ブロックの「50」を「11」に書き換えましょう。
⑧制御の中の『すべてを止める▼』をドラッグして、『でなければ』の中にくっつけましょう。
これで、問題を切り替えるプログラムは完成です。
作ったプログラムの解説
今回は問題を10問出題するプログラムを作りました。
「何問出題したのか」という情報を『出題した問題数』という変数に記録させます。
『問題画面』が表示されるたびに『出題した問題数』をカウントアップさせていきます。カウントアップさせた変数に入っている数字とコスチュームの番号を結び付けて、表示するコスチュームを変えています。
『もし<>なら~でなければ』ブロックでは、変数に入っている数字が「11」より小さい場合は、問題文を表示して、「10」より大きくなったら、終了するように条件を書いています。
『マル』のスプライト
次に、『マル』のスプライトを改造させていきます。
改造する内容は次の通りです。
・問題の答えを10個分用意する
・答えの判定を変更する
問題の答えを10個用意しよう
基本編では、問題の答えを『答え』という変数に入れておいて、その変数を使って正解・不正解を判定していました。
今回は『答え』の変数を「リスト」に変更して、答えを10個用意します。
Question
<解説>
1つの変数には、1つの答えしか入れることができません。
それに対し、1つのリストには、たくさんの答えを入れることができます。
今回のプログラムでは、答えを1つしか入れることができない箱(変数)を、答えをたくさん入れられる棚(リスト)に変えてあげます。
変数とリストの違いは、下の画像のようなイメージです。
この画像に出てくる「モノ」とは、数字や文字のことです。
今回のプログラムでは、「モノ」は「問題の答え」になります。
『答えリスト』という棚を作って、段数を10段にしてあげます。そうすれば、答えを10個入れることができる棚(リスト)が出来上がります。
それでは『答えリスト』を作っていきます。
変数の中の『リストを作る』をクリックしましょう。
そうすると、変数を作るときと同じような画面が出てきます。
①リスト名に「答えリスト」と入力しましょう。
②「答えリスト」は他のスプライトでも使うので、「すべてのスプライト用」を選択します。
③「OK」をクリックしましょう。
そうすると、下の画像のように「答えリスト」が作成されます。
この「答えリスト」に問題の答えを10個入れるプログラムを作っていきます。
基本編で作った『答え』の変数に問題の答えを入れている処理は、もう使わないので削除します。
削除した処理の代わりに、『答えリスト』に問題の答えを入れるプログラムを作っていきます。
変数の中の『なにかを答えリスト▼に追加する』ブロックをドラッグして、『緑の旗が押されたとき』ブロックの下にくっつけましょう。
今置いた『なにかを答えリスト▼に追加する』ブロックの「なにか」の部分を、1問目の答えに書き換えましょう。
これは、「答えリスト」という棚の1段目を作って、その中に1問目の答えを入れています。
同じように棚の2段目を作って、その中に2問目の答えを入れていきます。
この手順を繰り返して、棚の10段目まで作って、それぞれの問題の答えを入れていきましょう。
これで、『答えリスト』の棚を10段作って答えを10個入れることができます。
ただし、このままでは実行されるたびに『答えリスト』の棚が10個ずつ増えてしまいます。どんどん増えても一応ちゃんと動きますが、いらないモノが増えてしまうと思わぬ事態(想定通りに動かなくなったり、エラーになったり)が発生する可能性が高くなるので、そうならないようにいらないモノはなくしておきましょう。
変数の中の『答えリスト▼のすべてを削除する』ブロックをドラッグして、『緑の旗が押されたとき』ブロックの下にくっつけましょう。
こうすることで、『答えリスト』の棚を毎回削除してから10個の棚を作るようになるので、いらないモノが増えていくのを防ぐことができます。
最後に、『答えリスト』がゲーム画面に表示させないようにします。
これで、問題の答えが10個用意できました。
答えの判定を変更しよう
今は『答え』の変数を使って判定しています。これを『答えリスト』を使って判定するように改造していきましょう。
変数の中の『答えリスト▼の1番目』ブロックをドラッグして、『もし答え=マルなら』の「答え」の部分にはめこみましょう。
変数の中の『出題した問題数』の変数をドラッグして、『答えリスト▼の1番目』ブロックの「1」の部分にはめこみましょう。
これで、答えの判定が『答えリスト』を使った判定に改造できました。
プログラムの解説
今回改造したプログラムの解説をします。
これまでは、正解・不正解の判定
これまで、正解・不正解の判定は、『答え』の変数を使って判定していました。
『答え』の変数に「マル」という文字が入っていたら正解、「バツ」という文字が入っていたら不正解
これを『答えリスト』を使った判定に改造しました。
『答えリスト』には、
1問目の正解は『答えリストの1番目(1段目)』
2問目の正解は『答えリストの2番目(2段目)』
3問目の正解は『答えリストの3番目(3段目)』
…
というように、10問目までの答えが順番に入っています。
『出題した問題数』の変数には、
1問目なら「1」
2問目なら「2」
3問目なら「3」
…
のように数字が入っています。
『答えリスト』から、『出題した問題数』の変数に入っている数字の段数の文字(答え)が「マル」だったら正解、「バツ」だったら不正解となるように改造しています。
『バツ』のスプライト
『バツ』のスプライトを改造していきます。
改造する内容は次の通りです。
・答えの判定を変更する
これは、『マル』のスプライトを改造したときのやり方と同じように改造すればできるので、やってみましょう。
正解・不正解の判定をしている『もし~なら』ブロックの条件を、『マル』のスプライトと同じように改造します。
『答えリスト』は『マル』のスプライトで作っているので、『バツ』のスプライトでは答えリストを作る処理は不要です。
できましたか?
これで、『答え』の変数は完全に使わなくなったので、削除しましょう。
変数の中の『答え』を右クリックして、『変数”答え”を削除』をクリックしましょう。
ついでに、変数やリストがゲーム画面に表示されている場合は、表示されないようにしておきます。
これで『バツ』のスプライトの改造は完了です。
『解説文』のスプライト
最後に、『解説文』のスプライトの改造をしていきます。
改造する内容は次の通りです。
・解説文を増やすためにコスチュームを10個作る
・表示する解説文を切り替えるプログラムを追加する
コスチュームを10個作ろう
『問題文』のスプライトで、コスチュームを10個作ったときと同じ手順で、『解説文』のスプライトにもコスチューム10個作りましょう。
やり方を忘れてしまった人は、『問題文』のスプライトのところを見て思い出しましょう。
下の画像のように、解説文のコスチュームが10個できたら完成です。
表示する解説文を切り替えるプログラムを追加しよう
これも、『問題文』のスプライトで、「出題する問題を切り替えるプログラム」を作ったときと同じようにすればできます。
どうやったか思い出しながらやってみましょう。
『解説画面』になったときに、『コスチュームを出題した問題数』になるようにします。
できましたか?
これで『解説文』のスプライトの改造は完了です。
今回のプログラムのポイント解説
今回はたくさんのコスチュームを作ったり、リストを使って色んなプログラムを作りました。簡単に今回作ったプログラムのポイントを解説します。
今回のプログラムで一番重要なのは『出題した問題数』の変数です。
この変数に入っている数字が1~10に順番に変わっていき、その数字と各コスチュームの番号と『答えリスト』の何番目(何段目)なのかを見て、表示するコスチュームや正解・不正解を判定を行います。
実行して確認しよう
最後に、今回改造したプログラムが正しく動作するか確認しましょう。
以下の内容がきちんとできていれば、発展編①でやりたいことはすべて完成です。
『問題文』のスプライト
『問題文』のスプライトは、次のポイントに注目して確認してみましょう。
確認ポイント
・問題画面が表示されるたびに、問題文のコスチュームが変わっていること
・問題文の文字が背景の白い枠からはみ出ていないこと
『マル』と『バツ』のスプライト
『マル』と『バツ』のスプライトは、次のポイントに注目して確認してみましょう。
確認ポイント
・問題文ごとに、正解・不正解の判定が正しいこと
『解説文』のスプライト
『解説文』のスプライトは、次のポイントに注目して確認してみましょう。
確認ポイント
・表示される解説文が、問題文と一致していること
・解説文の文字が、背景の白い枠からはみ出ていないこと
まとめ
お疲れ様でした!
これで、〇×クイズの問題をたくさん出題できるようになりました。
今回は、作った問題10個を一気に出題するようにしましたが、次回はランダムで5問だけ出題するように改造します。
「一気に10問出す」でも良いのですが、毎回同じ問題が同じ順番に出題されるので、何回か遊ぶとすぐに飽きてしまうので、出題する問題も順番も毎回違う内容になるようにします。
今回使用した『リスト』は色んな事に使えます。使い方が分かればやれることの幅も広がるので、ぜひ覚えましょう。
次の記事「発展編②」はこちら↓
発展編② ランダムに問題を出そう
〇×クイズを作ろうトップ記事はこちら↓
〇×クイズを作ろうトップ記事
おすすめ
Scratchでのプログラミング学習におすすめの書籍です。
ディスカッション
コメント一覧
まだ、コメントがありません