340MBのHDDなんて今じゃOSも入らねぇ。

Windows3.1がインストールされていたということからも判るとおり、
新たに買ったPC9821NE2/W340というマシンにはハードディスクが
付いていた。(今じゃハードディスクの無いパソコンなど考えられ
ないが…)と同時にフロッピーディスクは5インチから3.5インチへと
変わり、(これまた今じゃフロッピードライブの付いているパソコンを
探す方が難しいが…)これにより過去の資産(プログラムソース)を
救出する術が無くなり、1から作り直すこととなる。


Visual Basic4.0を入手し、「さて何を作ろう?」と考えた時、
北海道ツーリングQUIZと平行して自分用に作成していた
クイズ練習ソフト「QR」を作り直してみようかと…




ハードディスクになったこともあり、前回の失敗を踏まえて問題は
シーケンシャルファイルとして外出ししたものの、ランダム出題で
問題を重複して出題しないためのロジックは前回同様フラグを用意
するという方法だった。プログラムの流れは下記の様な感じになる。


1) ファイルに格納されている問題数を確認し、変数lngQueCntに代入する。
2) 1からlngQueCntの範囲内で乱数xを発生させる。
3) x番目にフラグが立っていれば2)に戻り乱数発生からやり直す。
4) フラグが立っていなければx番目の問題を出題しフラグを立てる。
5) 2)〜4)を繰り返す。


この形式だと、10,000回連続で同じ乱数が発生した場合、2問目が表示
されるのは10,001回目の乱数が発生した時になる。まぁ10,000回は極端な
例だが、無いとも言い切れないし、未出題の問題の数が減ってくれば、
次の出題までのレスポンスは当然低下する。


そこでマズ安易な解決策として、QRは早押しの練習が目的のソフト
なので、出題数を固定してもゲームとは違い「問題が足りなくなった」
というシチュエーションではないと判断し、一度に出題される問題を
100問固定とした。…ただ根本的な解決にはなっておらず、QR
問題ファイルを選択指定することが可能なので、100問丁度や100問に
満たない問題数のファイルを指定した場合は全問出題せねばならず、
最後の問題を出題する際はやはりレスポンスが悪かったし、100問を
超えていたとしても100/120とかじゃレスポンスの向上は望めなかった。
しかしEDIT機能を提供している以上、100問以上の問題を入力しなければ
保存できませんよ、などという制限は設けたくなかったので、何かしら
抜本的な解決策が必要だった。


例)
99問の出題が終わった時点で、55番目の問題が未出題で残っていた場合、
55という数値が発生するまで乱数を発生し続けなければならない。


そこで…
と、ここでつづく。