
前回で出題をランダムにするようにしました。
今回はクイズを作ろうの最後にスコア機能を追加してみましょう。
クイズに正解したら得点を増やすという単純なものです。
ただ追加する前にプログラムをすっきりさせてみましょう。
少しプログラムが大きくなってきているのでもう少しわかりやすくしてみます。
それではチャレンジしてみましょう!
ブロック定義を使ってプログラムをすっきりさせてみよう
このままスコアを加算していく処理を追加しても良いのですが少しプログラムが多くなってきたので整理してみましょう。
整理するにはブロック定義を利用します。
ブロック定義とは自分のオリジナルブロックを作ることができます。
何度も使うような処理などに名前をつけてあげてオリジナルブロックを作ることができます。
今回は何度も使うような処理はありませんが意味のある処理をまとめて名前をつけるということはプログラミングにおいてとても重要なことです。
長いプログラミングはとてもみるのが大変なのですが細切れに意味のある単位にすることでプログラムをみやすくします。
まめ知識
プログラマーというとすごい勢いでキーボードを叩いてだーっとプログラミングをしていることが思い浮かばれますよね。
実は意外にもキーボードを叩いている時間が必ずしも多いとは限りません。
キーボードを打つと同じくらいに多くなるのは人の作ったプログラムをみることです。
プログラムは一度作って終わりではありません。
新しい機能を追加したり、不具合が出たりで必ずプログラムを修正する必要が何かしら出てきます。
そんな時に他の人が作ったプログラムをみてどこを修正すれば望んだ機能が作れるのか。
どこを修正すれば不具合を直すことができるのかということを考えないといけません。
また自分だけで作っていても実は同じです。
10日前に作ったプログラムを覚えていなかったりするので「これなんだっけなー」みたいなことになります。
10日前の自分は他人と同じです。
少しでもプログラムを読みやすくしておくことで考える時間を少なくすることができます。
難しい言葉で『可読性』といいます。
読みやすいプログラムを可読性が高いと言ったりします。
抜き出す処理を決める
意味のある単位と言われてもピンとこないかもしれませんが2つ以上のことをしていないという状態がいいと思います。
今のプログラムから抜き出せそうな処理を探してみましょう。
私は以下の5つの処理をブロック定義にしたいと思います。
- リストを空にする
- 答えをリストにいれる
- 問題をリストにいれる
- 問題の順番を取得する
- 答え合わせをする
ではブロック定義を作ってみましょう。
『変数』エリアにある『ブロックを作る』ボタンをクリックします。
最初はブロック名を「リストを空にする」にしてOKボタンをクリックします。
作成が完了すると以下の定義ブロックがプログラミングエリアに表示されます。
表示されているのが確認できたら上記のブロックにリストを削除しているブロックを移動させましょう。
移動させたら次は『変数』エリアに『リストを空にする』ブロックが追加されていますので先ほど移動した元の場所に代わりにおくようにします。
上記のようなプログラムになっていればOKです。
ブロック定義に入れ替えることができたら必ず実行して動きが変わっていないか確認してみましょう。
動きが変わっていなければOKです!
この調子で他の4つも修正してみてください。
以下のようなプログラムになっていれば大丈夫です。
すごくすっきりしましたね!
ブロック定義は以下のような形になっていればOKです。
スコアをつける機能を追加してみる
プログラムをすっきりできたら次はスコアをつける機能を追加していきましょう。
正解したらスコアが増えるように
まずはスコアという変数を作ります。
変数名を『スコア』として『すべてのスプライト用』とします。
あと得点を追加する処理もブロック定義にしておきましょう。
『得点を加算する』というブロック定義を作りましょう。
『得点を加算する』ブロック定義には『スコアを10ずつ変える』を追加します。
『得点を加算する』ブロック定義が作られたら『正解!と2秒言う』の後に『得点を加算する』ブロックを追加します。
追加したら実際に動かしてみましょう。
ちゃんとスコアが増えています。
最後の問題は得点2倍!
よくあるやつですね、最後の問題は2倍の点数にしてみましょう。
『得点を加算する』ブロック定義に分岐を追加しましょう。
最後の問題なら20点、それ以外は10点と言う処理ですね。
最後の問題はどうやって判定しましょう?
出題された問題の長さと問題もしくは答えの長さが同じであれば最後の問題と判断できそうですね。
上記のプログラムができたら実際に動かして確認しましょう。
最後の問題に正解すると20点加算されていますね。
他にクイズを増やしたり得点を増やすタイミングをランダムしたりするなど思いついた機能を追加してみましょう。
得点が増える時にはスプライトに言わせるなどすると解答者に緊張が走り面白いかもしれませんね。
クイズを作ろうはこれでおしまいです!
お疲れ様でした!