jsWaffleでAndroidアプリを作ろう!クイズアプリ編⑥
では、シャッフルします。
list配列の定義の後に、以下を追加してください。
list = shaffle(list);
shaffle関数を呼び出してシャッフルしたあと元のlistに代入して変更を確定します。
これで出題されるクイズはランダムで出てくるはずです。
ここまでのスクリプト全文を表示しておきます。
$(function(){ var list = [ { "question":"日本一高い山は?", "selection":["父山","富士山","高山","下山"], "answer":"富士山" }, { "question":"世界一小さい国は?", "selection":["日本","アメリカ","ロシア","バチカン市国"], "answer":"バチカン市国" }, { "question":"日本の初代総理大臣は?", "selection":["森鴎外","伊藤博文","日下部陽一","坂本竜馬","斉藤一"], "answer":"伊藤博文" }, ]; list = shaffle(list); for(var i=0;i<list.length;i++){ var quiz = list[i]; var title = "第" + (i+1) + "問:" + quiz["question"]; var a = droid.dialogList(title,quiz["selection"]); if(a == quiz["answer"]){ alert("正解です。"); }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; } });
はい。これを実行してみます。上記のlistで定義した順番には出題されていないことを確認してください。Youtubeの動画を貼り付けますのでご覧ください。
はい。きちんと問題がランダムで出題されました。
ただ、クイズへの回答が一度選択してしまうとやり直しがききませんので
今度はこれを回答のし直し可能なものに変えてみます。
つまり、回答しても「本当にこの選択肢でいいですか?」と聞き、
キャンセルもできるように作り変えていくということです。
さて、次回からキャンセル機能追加を行いましょう。