“RUN” それは魔法の言葉

私とコンピュータの思い出を、だらだらと綴ります。最近はHSP3でのゲーム作り日記です

146.HSPでゲームを作ろう:培養臼(BAIOUS) その23

思いのほか早くコンティニュー機能を作れたので、ステージ練習機能の作成に取り掛かった。
とりあえず思いついた仕様はこれ。

  • 選択したステージが終わったらゲームオーバー
  • 本編で進んだステージまでしか選べない
  • ボーナスステージは対象外(ボーナスステージで終わった場合は前ステージまで)
  • ラストステージも対象外

とりあえずステージ選択画面を先に作った。

ステージデータはCSVファイルを読み込めばよいのだが、ステージ選択のために使うことは考えていなかったので、ちょっとだけ面倒だった。
何ステージでも作れるようにしたり、; が先頭の行は、コメントとして扱い、読み込み時はスキップしたりしていた。

ステージデータのCSV

全部の行を最初に読み込んで、配列に入れるのは非効率と考え、ステージ開始時に1行分のデータを読み込み、各変数にセットするようにしていた。

こんな作りなので、各ステージの始めに実際のCSVの何行目を読み込むかを変数で指定する。同じCSVデータを使うので、練習するステージを選択したら、実際のCSVの行数を渡さなくてはならない。

そこで、ステージデータのCSVを全部読み込んで、ステージ番号とその行数を配列に格納することにした。
選択したステージの行数を持ってる配列の値を、ステージ最初にCSVファイルを行数指定して読み込むルーチンに渡してやった。

あとは練習モードであるフラグを設定して、ステージクリアとゲームオーバーの判定処理に、練習モードならば無条件にゲームオーバーになる処理を加えた。
ただ、画面が全く同じままだと判別できないので、ゲームの進行中は、画面左下に「PRACTICE」の文字を点滅表示させた。

これで、コンテストの〆切前に機能追加したバージョンをアップすることができた。