“RUN” それは魔法の言葉

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

132.HSPでゲームを作ろう:シューティングゲームっぽい何か その9

ステージごとの設定をどうするか。
BASICでいうところの、READ~DATA文が使えるとよいのだが、HSP3には無い。
量が少なければ、配列変数に初期値を代入するソースをゴリゴリと書けばいいけど、視認性も悪いし、何より書き換えるのが面倒。

もともと、配列の初期設定が面倒なときは、テキストファイルに持たせた方がいいという情報もあったので、テキストファイルに、カンマ区切りで情報を持たせることにした。いわゆるCSV形式だ。

ステージデータのCSV形式
 STAGE 1,0,10,2,50,120,1,6,0,0,1,20,0

ファイルを読み込んで、1行ずつ取り出すのに便利な命令群が、HSP3には用意されている。
まず、ファイル自体を読み込むバッファとなる変数を、noteset命令でセットする。
そして、noteload命令で、指定したファイルをバッファに読み込む。
バッファからは、行単位で情報を取り出せる。noteget命令で、行番号を指定して、変数に内容を読み込める。

ここまでで、1ステージ分の情報を、1つの変数に取り込めた。
しかし、まだ個々の情報を取り出したわけではない。カンマで区切られた項目を、それぞれ取り出す必要がある。
CSVのような特定の文字で区切られたデータを分割するには、split命令が楽。
取り出し元の変数と、デリミタと呼ばれる区切り文字、格納する変数を指定してあげると、配列変数扱いになって、1つずつ分けて値が格納される。

こうすることで、1行になっていた各項目の情報を、配列化してくれる。
ただ、元が文字列なので、値が数字であっても文字扱いになる。
そこで、ゲーム処理内で使う各変数を作って、それにint関数を使いつつ、型変換して使うことにした。

これで、CSVファイルの内容を書き換えたり、行を増やす、減らすを行えば、ステージを増やしたり、難易度調整を行ったりが簡単にできるようになった。

さて、実はもうタイトルは決まっていたり、もっといろいろと作りこんでいるのだが、HSPコンテストに出品予定なので、この辺でいったん終了する。
内容の細かな続きは、コンテストに出品後に再開します。