enchant.jsを使って四択問題を出題するサンプルプログラムを作った。
ただし、古いバージョン(v0.4.5)のenchant.jsでのみの動作となる。(enchant.jsのラベルクラスの仕様が最新バージョンでは変わっているため。)
問題をランダムに出題することと、四択の表示位置をランダムに表示するためにJavaScriptプログラムでシャッフルしている。
// 問題データをシャッフル var shaffleData = function(){ for(var i=0; i<mondai_data.length; i++){ new_mondai_data[i] = mondai_data[i]; new_sentaku_data[i] = sentaku_data[i]; } for(var i=0; i<100; i++){ var work = ""; var r1 = rnd(mondai_data.length); var r2 = rnd(mondai_data.length); // 問題 work = new_mondai_data[r1]; new_mondai_data[r1] = new_mondai_data[r2]; new_mondai_data[r2] = work; // 選択肢 work = new_sentaku_data[r1]; new_sentaku_data[r1] = new_sentaku_data[r2]; new_sentaku_data[r2] = work; } }; // 選択肢をシャッフル var shaffleSentakusi = function(){ kotae = 0; for(var i=0; i<20; i++){ // シャッフル var work = ""; var r1 = rnd(4); var r2 = rnd(4); console.log(r1 + " " + r2); work = new_sentaku_data[mondaiNo-1][r1]; new_sentaku_data[mondaiNo-1][r1] = new_sentaku_data[mondaiNo-1][r2]; new_sentaku_data[mondaiNo-1][r2] = work; // 正しい答えをチェックしておく if(r1 == kotae || r2 == kotae){ if(r1 == kotae) kotae = r2; else if(r2 == kotae) kotae = r1; } console.log("kotae = " + kotae); for(var j=0; j<4; j++) sentaku[j].kotae = false; sentaku[kotae].kotae = true; } };
enchant.jsのラベルクラスの表示にただのCSSを使ってボタンらしく見せているだけの力技プログラムだ。CSSの調整で表示の融通がきくもののかなり強引な仕様だ。
CSS部分
body{ margin:0; } /* 選択ボタン */ #sentaku{ padding-top: 12px; /* 上下の中央ぞろえ苦肉の策 */ text-align: center; text-valign: middle; color: #000; background: #fff; width: 158px; height: 36px; border: solid 1px #000; border-radius: 10px; } /* aタグ */ #sentaku:hover{ background: pink; }
コメント