難易度を調整して、若干ではあるが1周目はクリアしやすくなった。と思うので、ハードモードの実装に取り掛かる。
テキストファイルは1周分しか書けないようにプログラムを書いてしまったし、なにより、このゲームを2周、3周と周回する人がどれぐらいいるのかとww
なので割り切って、1周したらクリアフラグを立てて、オプション画面でハードモードとして切り替えができるようにする。
オプション画面自体は、他の項目と大差ないので、ほぼコピペで作れる。
ハードモードのステージデータは、これまた割り切って、別のファイルを作成して、オプションの値によって読み込むファイルを切り替えることにした。
こうすれば、独立してテキストファイルを差し替えることができ、難易度調整もやりやすい。
sdim SDataFileName,15,2 ;ステージデータファイル名 SDataFileName(0)="stage_data_ex" SDataFileName(1)="stage_data_ex2" ;ステージデータファイルを読み込む SDataFile=SDataFileName(u_loopnum)+".txt" notesel dat noteload SDataFile rownum=0 rowmax=notemax
オプションの項目を増やすので、データベースのカラムも追加が必要。
今の項目は…
- ID INTEGER PRIMARY KEY:ID(主キー)
- clearstage integer:クリアしたステージ情報
- fullscr integer:フルスクリーンモード
- bgmvol integer:BGMボリューム
- sevol integer:SEボリューム
これに、2つのカラムを追加することにした。
- acflg integer:1周目のクリアフラグ
- loopnum integer:現在設定されている周回(0→ノーマル、1→ハードモード)
acflgが1の時だけ、オプション画面でハードモードを選ぶことができ、loopnumの値を1にセットする。
オプション画面はこんな感じ。
決定したら、DBの値をUpdateする処理を加える。
ただ、困ったことに、プラクティスモード用のどのステージまで進んだのかを記録するカラムがあるのだが、1周目と2周目を分けるのが面倒ww
なので、切り替えたらクリアすることにした。
if b_loopnum != u_loopnum { ;もし難易度変更があったら sql_q "UPDATE config SET loopnum="+prm_i(u_loopnum)+",clearstage=0 WHERE ID=1" }