以前質問などをした自作中のゲーム、2年たつがまだ自然消滅したりせず、ちゃんと
作り続けていますw
でそうしたそれなりに大きな作品なので、データ保存を必要とするゲームであり、
A.文字変数によるプレイヤーの名前(日本語と英語の表示切替も作っており、
日本語は全角4字か8字、英語は半角8字か16字)
B.数値型配列によるプレイヤーの能力値(添字が4なら早さとか、8ならHPとか)
C.数値型配列によるマップデータ(固定マップでなく、DQ9の宝の地図みたいに
ランダムでマップが作られ、保存データを消すまで有効なので、いちいち保存)
に大別されます。でHSPではどんなセーブ機能があるか質問したら、また微妙?な
機能だと回答があって、それぞのSAVE機能に合わせた保存方法として、
1.notesave(文字列保存)
1と逆で数値型変数を、str関数とval関数で文字型にコンバートし、数字ばかり
並んだ文字列で保存。ただし桁あふれしない事と(上記変数のBは殆どが0-255で
一部は0-65535、Cは0-3)、改行文字も取得できないみたいなので、固定長にして
LOAD時に取得位置を厳格化する。
2.bsave(配列変数保存)
BとCはほぼそのまま入るが、Aはそのままでは無理。文字コードが取得できれば
数値型に出来るが、HSPでは文字コードが取得出来ないそうなので、"ABC"や「あいう
えお」などよく使う文字を長大文字列に格納し、instr関数やstrmid関数の何番目に
来るかという疑似文字コードを使い数値型にコンバートという方法を考えたが、
ファミコンの様に英数字・ひらがな・カタカナ程度で精いっぱいであり、漢字は無理?
3.bmppsave(グラフィック保存)
数値をcolor命令とpget命令によるRGB(0-255,0-255,0-255)にコンバートし
bmpで保存…というのも考えたが(プチコンでもこんなテクニックが早くから編み
出されていましたね)、同じ数値保存なら2のほうが簡単で容量も小さいか(^^;
4.Aはnoteseva・BとCはbsaveでそれぞれ別々に保存
ただしゲームデータをコピペする時、微妙に面倒。
を考えました。どの方法がいいでしょう?あるいはほかにいい方法ありますか?