ぼくらと泣き虫先生の7日間+7年戦争

今回タイトルには特に意味は無い。


画面描画、問題出題、キー制御などのプログラムを記述し、
その後ろの行に下記の様に問題を記述。GOSUB〜RETUENで
読み込んで、乱数により出題としたんだが…


問題記述部はこんな感じ。
1000 QUE$(1)="次のうち最も高い山は?"
1010 ANS1$(1)="エベレスト"
1020 ANS2$(1)="富士山"
1030 ANS3$(1)="オリンポス山"
1040 ANS(1)=3:GENRE(1)=2
1050 QUE$(2)="冬季五輪が2度行われた3つの都市のうち、12年と最も開催間隔が短かったのは何大会?"
1060 ANS1$(2)="サンモリッツ"
1070 ANS2$(2)="レークプラシッド"
1080 ANS3$(2)="インスブルック"
1090 ANS(2)=3:GENRE(2)=5


最初は200問足らずの問題しか用意していなかったんで、
同じ問題が出題される頻度が高かった。で分母が増えれば
頻度が下がるだろうと、問題を増やして行くと、今度は
これ以上長いソースは記述出来ませんと怒られた。


仕方がないのでソースをメインプログラム部と問題記述部
に分割。さらに配列の要素数の上限を300に固定し、
問題記述部も001〜100、101〜200、201〜300と分割して
下記の様に保存。


MONDAI01 … 配列001〜100の問題を記述
MONDAI02 … 配列101〜200の問題を記述
MONDAI03 … 配列201〜300の問題を記述
MONDAI04 … 配列001〜100の問題を記述
MONDAI05 … 配列101〜200の問題を記述
MONDAI06 … 配列201〜300の問題を記述
MONDAI07 … 配列001〜100の問題を記述
MONDAI08 … 配列101〜200の問題を記述
MONDAI09 … 配列201〜300の問題を記述


メインプログラム部で問題ファイル数を上限とした
乱数を発生させCHAINさせる問題記述部のファイルを選択。


例)
 発生した乱数が1であれば
  MONDAI01、MONDAI02、MONDAI03をCHAIN。
 発生した乱数が8であれば
  MONDAI08、MONDAI09、MONDAI01をCHAIN。


この方法だと、問題を300問単位でしか増やすことが出来ず、
同一の問題が出題される頻度は然程解決していない。……
そこでハタと気が付いた。北海道の主要10都市から目的地を
選択する際、目的地が重複しない様に一度選択された都市には
フラグを立て、フラグが立っている目的地が選択された場合は
再度乱数を発生させていたことを。
ということで300問分のフラグを用意し、発生した乱数が
一度出題した問題番号だった場合、乱数の発生を繰り返すことで
同一問題の複数出題を解消。


…とここで「北海道ツーリングQUIZ」の開発は終わっている。
世の中にWindows3.1という代物が出回ったので、その波に
乗ってみたかったのと、ノートパソコンが欲しくなったのとで
おニューますぃ〜んに変えてしまったため、過去の資産を
引き継げなくなってしまったためだったり、なかったり…。


つづく。