jsWaffleでAndroidアプリを作ろう!クイズアプリ編⑧
while文の中身を記述していきます。
droid.dialogList()でクイズを出題した後、droid.dialogYesNo()で選択した選択肢がそれでよいかを聞き直します。
var a = droid.dialogList(title,quiz["selection"]);
ok = droid.dialogYesNo("回答の確認","回答は「" + a + "」でよろしいですか?");
droid.dialogList()は選択した回答を返しますから、それを変数aに代入しておきます。
そしてdroid.dialogYesNo()で上記のように聞き返しています。
droid.dialogYesNo()はYesの場合にはtrueをNoの場合にはfalseを返しますから、それをokに代入することで現在falseであるokの中身を書きかえることができるわけです。
つまり、droid.dialogYesNo()の結果がYesの場合にはwhile文のループは終了し、次の処理へ向かうことになります。
さて、この後にさらに処理を追記していきましょう。
追記したい処理は、選択肢が間違いないという意味でYesを選択した場合に丸付けをする処理です。
if(ok){ if(a == quiz["answer"]){ alert("正解です!"); }else{ alert("残念!不正解です。正解は「" + quiz["answer"] + "」でした。"); } }
if文はtureの場合に処理を実行するものですから、droid.dialogYesNo()でYesを選択し、okにtureが格納されている状態であれば処理は実行されます。
if(ok)のなかの処理は以前の記事で説明した丸付け処理と全く同じですね。
はい。これで記述完了です。ここまでの全文を表示しておきましょう。
$(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 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"] + "」でした。"); } } } }
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; } });
次の記事ではこの実行結果と、更なる改良を進めていきます。