Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/takeoshan/mahjong.org/public_html/blog/wp-content/themes/affinger/functions.php on line 1546
前回の「符と翻数を決まった範囲内で出力するプログラム」の続きです。今回は、問題を作成して利用者が回答した点数をチェックするプログラムを作ってみます。
動作の確認は、サンプルページをご覧ください。
点数計算練習問題を作成するプログラム
・JQueryの組み込み
<script src="../../js/jquery-1.4.2.min.js" type="text/javascript"></script>
・JavaScriptコード
$(document).ready(function() {
//例:問題作成と回答チェック
$("button.make-mondai").click(function() {
var humax = eval($("select.humax").val()); //符の最高値をリストから取得
var humin = eval($("select.humin").val()); //符の最低値をリストから取得
var huhani = Math.random()*(humax-humin)+humin;//符を算出
var hu = Math.round(huhani/10)*10; ////10未満を丸める
var hanmax = eval($("select.hanmax").val()); //翻数の最高値をリストから取得
var hanmin = eval($("select.hanmin").val()); //翻数の最低値をリストから取得
var hanhani = Math.random()*(hanmax-hanmin)+hanmin;//翻数を算出
var han = Math.round(hanhani); //1未満を丸める
$("input.hu-mondai").val(hu);
$("input.han-mondai").val(han);
/* 通常計算 */
suten = hu * Math.pow(2,han) * 4 * 4;
ten1 = Math.ceil(suten*1.5/100) * 100;
ten2 = Math.ceil(suten/100) * 100;
/* 13翻以上 */
if (han>=13) {
ten1 = 48000;
ten2 = 32000;
}
/* 11翻以上 */
if ( han >= 11 && han <=12) {
ten1 = 36000;
ten2 = 24000;
}
/* 8翻以上 */
if ( han >= 8 && han <=10) {
ten1 = 24000;
ten2 = 16000;
}
/* 6翻以上 */
if ( han >= 6 && han <=7) {
ten1 = 18000;
ten2 = 12000;
}
/* 5翻 */
if ( han == 5 ) {
ten1 = 12000;
ten2 = 8000;
}
/* 130符以上かつ2翻 */
if ( hu >= 130 && han ==2) {
ten1 = 12000;
ten2 = 8000;
}
/* 70符以上かつ3翻 */
if ( hu >= 70 && han ==3) {
ten1 = 12000;
ten2 = 8000;
}
/* 40符以上かつ4翻 */
if ( hu >= 40 && han ==4) {
ten1 = 12000;
ten2 = 8000;
}
//親と子を算出して、条件にあった値を出力する
var oyako = Math.ceil( Math.random()*2 );//親が「1」、子が「2」
if (oyako == "1"){
oyako = "親";
tensu = ten1;
} else if (oyako == "2"){
oyako = "子";
tensu = ten2;
}
$("input.oyako-mondai").val(oyako);
$("input.tensu-kekka").val(tensu);
});
// 回答チェック
$("button.tensu-kaiou").click(function() {
var a = eval($("input.tensu-kekka").val());
var b = eval($("input.tensu-kaitou").val());
if (a==b){
alert("正解です^^");
}else{
alert("不正解です。正解は " + a + " です^^;");
}
});
});今回は問題を作成、正解まで計算します。あらかじめ正解はテキストボックス(input class:tensu-kekka)に書き込みます(81行)。[回答チェック!]ボタンがクリックされたら、利用者が入力した回答(input class:tensu-kaitou)と正解(input class:tensu-kekka)の値を比較(86行と87行)して、それぞれの処理を行います。
ほんとうは点数計算の部分は、回答と正解の値の比較時に行ったほうがスマートだと思いますが、こんな方法もあるということで^^;

正解の場合

不正解の場合
今回はここまです。点数計算の問題は出上がりまでですが、ツモ上がりも基本は同じです。私もこのプログラムをたたき台にして点数計算練習ツールを作ってみたいと思います。
ではでは~

