;WordQuiz ;copyleft 2007-06-16 sugiura@nagoya-u.jp ; 1) 目的: 単語の意味の確認 ; 2) 特徴: ランダムに出題される ; 3)   : 選択肢もランダムに配置される(ここがミソ) ; 4)   : テストではない点に注意。 ; 前から順番に、順番を対応させて、問い・正答・誤答 を記述すること toi = "language", "include", "offer", "information","resource", "register","public", "search","local", "lean" seitou = "ことば", "ふくむ", "提供する", "情報", "資源", "登録する", "公の", "探す", "地元の", "やせた" gotou = "いぬ", "たべる", "命令する", "面接", "醤油", "計算する", "ただの", "届く", "田舎の", "まなぶ" ;------------------出題をランダム順にする----------------------- dim R,length(toi) ; 配列の数を問題数にする randomize ; 乱数を不規則化 repeat length(toi) ; 問題数の数だけ繰り返す x = rnd(cnt+1) ; cntは0から始まるので1を足して乱数の発生をはじめる R(cnt) = R(x) ; 乱数番目の配列の数を繰り返し回数番目の数に代入 R(x) = cnt + 1 ; 繰り返しの回数+1を乱数番目の配列に入れる loop ;-------------------これで配列Rの中には、1から10の数字がランダムに並んでいる *start ;-----------------プログラムの本流------------------------ i = 0 *main cls if i = length(toi) : goto *owari ; 問題数の上限に達したら終わり gosub *settei mon = i + 1 ; 問題番号を表示するために1を足す。 mes "第"+mon+"問" ; 問題番号を提示 mes "" j = R(i) - 1 ; Rの中身は、1から10なので1を引いて配列の番号に対応させる pos 200, 250 color 0,0,0 font "MS 明朝", 48, 16 mes toi(j) ; 問題文を提示 hidari = seitou(j) migi = gotou(j) i = i + 1 randomize tmp = rnd(2) ; 0からはじめて2つの数字(すなわち、0と1)をランダムに出す if tmp = 0 { ; 0がでたら、正当を左側に配置 h = 170 : m = 290 } else{ ; そうでないばあいは、誤答を左側に配置 m = 170 : h = 290 } pos h, 350 button goto hidari, *seikai pos m, 350 button goto migi, *matigai stop *seikai pos 400, 400 color 0, 255, 0 mes "正解" wait 100 cls goto *main *matigai pos 400, 400 color 255, 0, 0 mes "間違い" wait 100 cls goto *main ;---------------終了する際に----------------------------- *owari cls color 200, 100, 100: boxf ; 場面の変化を背景の色で伝える。 color 0,0,0 font "MS 明朝", 24, 1 pos 70, 100 mes "" mes "これでおわります" pos 70, 350 button goto "はい", *owari2 pos 190, 350 button goto "再挑戦", *start stop *owari2 wait 100 end ;--------------------------sub------------------------- *settei cls color 255, 255, 200: boxf ; 背景をクリーム色に color 0,0,0 font "M S 明朝", 24, 1 pos 70, 100 mes "" mes "正しいほうをクリックしてください" mes "" mes "−−−−−−−−−−−−−−−−" mes "" return