jsWaffleでAndroidアプリを作ろう!クイズアプリ編⑨
では実行してみます。Youtube動画を貼り付けますのでご覧ください。
これで、回答のキャンセルが何度でもできるようになりました。
少しずつクイズアプリらしくなってきましたでしょうか?
でも、クイズアプリなら自動採点機能も必要でしょう。
次は採点機能を入れてみましょう。
採点機能の実装は非常に簡単です。
まず、正解数をカウントする変数を用意し、正解の場合のみ1ずつプラスします。
そして、その変数を必要に応じて表示すればいいだけです。
では、正解数をカウントする変数を用意しましょう。
for文の前に以下を記述して下さい。
var score = 0;
初めは正解数は0ですから、初期値として0を代入しておきます。
そして以下のソースの赤い部分を書きかえていきます。
for(var i=0;i<list.length;i++){ var quiz = list[i]; var title = "第" + (i+1) + "問:" + quiz["question"]; var ok = false; while(ok==false){ var a = droid.dialogList(title,quiz["selection"]); ok = droid.dialogYesNo("回答の確認","回答は「" + a + "」でよろしいですか?"); if(ok){ if(a == quiz["answer"]){ alert("正解です!"); }else{ alert("残念!不正解です。正解は「" + quiz["answer"] + "」でした。"); } } } }
上記赤い部分は正解だった時に実行される処理です。
ですので、そこに
score++;
と書き込み、正解だった時のみscoreは1プラスされるようにします。
更に、せっかくなので問題で正解するたびに、現在の正解数がわかるようにしましょう。
score++;のあとに以下を記述して下さい。
alert("正解です!現在のスコア:" + score + "点!");
これで正解するたびに、現在の正解数がわかります。
ここまでの全文を表示しておきます。
$(function(){ var list = [ { "question":"日本一高い山は?", "selection":["父山","富士山","高山","下山"], "answer":"富士山" }, { "question":"世界一小さい国は?", "selection":["日本","アメリカ","ロシア","バチカン市国"], "answer":"バチカン市国" }, { "question":"日本の初代総理大臣は?", "selection":["森鴎外","伊藤博文","日下部陽一","坂本竜馬","斉藤一"], "answer":"伊藤博文" }, ]; list = shaffle(list); var score = 0; for(var i=0;i<list.length;i++){ var quiz = list[i]; var title = "第" + (i+1) + "問:" + quiz["question"]; var ok = false; while(ok==false){ var a = droid.dialogList(title,quiz["selection"]); ok = droid.dialogYesNo("回答の確認","回答は「" + a + "」でよろしいですか?"); if(ok){ if(a == quiz["answer"]){ score++; alert("正解です!現在のスコア:" + score + "点!"); }else{ alert("残念!不正解です。正解は「" + quiz["answer"] + "」でした。"); } } } }
function shaffle(arr){ for(var i=0;i<arr.length;i++){ /* * 配列の全要素から2つを取り出し、 * その二つを入れ替える処理を配列の要素の個数回 * 繰り返すことでシャッフルする。 */ var num = Math.floor(Math.random()*arr.length); var temp = arr[num]; arr[num] = arr[i]; arr[i] = temp; } return arr; } });
はい。これで採点機能を追加できました。
次の記事で実行結果を確認し、またさらに拡張を模索します。