【2限目】火星人クイズのアルゴリズムを考えよう
火星人のアルゴリズムをかんがえよう!
アルゴリズムを考えるので、再度完成品をみていきましょう。
もうアルゴリズムが自分で考えられる人は先にすすんでくださいね。
やりたいこと
質問に答えて正しいと火星人が「正解」といって、にっこりする、間違えると「不正解」といって怒る。
今回はやりたいことが短いですね。
分解してみましょう。
分解すると
1-2.質問するセリフが表示される
1-3.下に答入力欄を表示
2-1.答えが正しいかどうかチェック
2-2.正しかったら、正解という
2-3.正しかったら、ニッコリのコスチュームに変える
2-4.間違っていたら、不正解という
2-5.間違っていたら、怒るコスチュームに変える
ざっとこんな感じでしょうか。
質問と答える部分のプログラム
1-2.質問するセリフが表示される
1-3.下に答入力欄を表示
火星人のスプライトのコード画面に移動してください。
まずは「1-1.火星人をクリックする」です。
イベントの「このスプライトが押されたとき」をもってくればOKです。
いままでやったのと同じですね。
次の2つですが、これは実はScratch(スクラッチ)では1つのブロックでできています。
1-3.下に答入力欄を表示
調べるの「()と聞いて待つ」というブロックがそれです。
左の()には、火星人に質問させたいセリフを書いてください。
サンプルでは、1+1は? としていますが、答えがわかるものであれば、なんでも構いません。
2つのブロックをつなげるとこうなります。
ためしに火星人をクリックしてみてください。
質問と解答入力欄が表示されましたか?
次は、答えがあっているかどうかを判定するプログラム、2-1から2-5までです。
2-2.正しかったら、正解という
2-3.正しかったら、ニッコリのコスチュームに変える
2-4.間違っていたら、不正解という
2-5.間違っていたら、怒るコスチュームに変える
2-2,2-3をみてみてください
「もし〜たら」という言葉に置き換えられますね。
ということで、前にやった条件分岐です。
制御「もし〜なら」というブロックを使います。
制御をクリックすると、「もし〜なら」というブロックが2種類あることがわかります。
今回はどちらを使うのがいいのでしょうか?
どちらをつかってもプログラムはうごきます。
今回のようなクイズのような場合は、「答えがあっていなければ、かならず間違い(2-3)」ということになりますよね。
ですので、「もし〜なら〜でなければ〜」ブロックを使うと便利です。
クイズが正解かどうかを判別するプログラムをこの2種類ブロックそれぞれでつくるとこんな並びになります。
左側の「もし〜なら」のブロックを2つつなげた方が、条件ブロックを2つ用意する必要があり、右側の方がスッキリしていてわかりやすいですよね。
答えが3つ以上あって、答えによって実行することが別の場合などは、「もし〜なら」や「もし〜なら〜でなければ〜」を複数組み合わせることになります。
ということで今回は右側のブロックを使います。
「もし〜」の条件分岐のブロックをつかうときは、まず条件を設定するブロックが必要です。
今回の質問は「1+1は?」という質問でした。
なので
「答えがあっている」というのは、「入力した答えが2」ということになります。
今回初めて使った「()と聞いて待つ」ブロックに関連して「答え」というブロックがあります。
クイズの入力した答えは、じつはこの「答え」というブロックに入っていることになります。
ブロックに入っているというとわかりづらいかもしれませんが、「答え」という名前がついた箱に入力した数字が入っていると思ってください。
こういう箱をプログラムでは「変数」といいます。詳しくは別のところでお話します。
ではこれをどうやって使えばいいでしょうか?
これについては、次回の授業でお話します。
- 【1限目】クイズ好きな火星人と火星を用意しよう
- 【2限目】火星人クイズのアルゴリズムを考えよう 今ここです
- 【3限目】条件によってコスチュームを変えよう!