プチコン3号&BIGまとめWiki

TXTリソースにセーブデータを保存する

パンくずリスト

その前に

プチコンでセーブをするときには2種類の方法があります。

  • TXTファイル…文字列の状態で保存します。
  • DATファイル…数値の状態で保存します。「数値を文字列に変換しなくていい」というメリットがあります。

このページでは「TXTファイル」について扱います。

参考

Mame/Hiscore
こちらもTXTファイルを使ったハイスコアの保存について触れています。
文字列?数値?何が違うの?って人はこちらもお読みください。
当ページでは「文字列とか数値とか」を区別できるレベルを対象としています。

数値を1つだけ保存する方法(ハイスコアだけ、など)

  • 例文では「HISCORE(ハイスコア)」という名前の変数を使っています。
  1. ’セーブ
  2. SAVE ”TXT:HOGE.SAV”,STR$(HISCORE)
  3. ’ロード
  4. HISCORE=VAL(LOAD(”TXT:HOGE.SAV”,0))

数値(0~65521)を2つ以上保存する方法

  • 例文では「X,Y(今いる座標),HPMAX(最大HP),HP」という名前の変数を使っています。
  • 2つ以上保存するときのポイント:「くっつけたデータを分解する」作業が必要になります。
  • なので、CHR$()やASC()というもの(65000くらいの大きな数を1文字にできる)を使って「数値1個=1文字」にしています。
  • 14を足し引きしているのは「数字が変わってしまう」のを防ぐためです。下記参照。
  • CHR$()やASC()の仕組み上、マイナスの数や小数は使えません。

セーブ

  • ○=○+△ という式は「○に△を加える」という意味合いになります。INC命令という同じ働きをする命令もあります。
  1. TEMP$=CHR$(X+14):’空っぽから 始めるので 足し算しない
  2. TEMP$=TEMP$+CHR$(Y+14)
  3. TEMP$=TEMP$+CHR$(HPMAX+14)
  4. TEMP$=TEMP$+CHR$(HP+14)
  5. SAVE ”TXT:HOGE02.SAV”,TEMP$

ロード

  • SHIFT()は「前から1個(1文字)取り出す」という意味です。
  1. LOAD ”TXT:HOGE02.SAV”,0 OUT TEMP$
  2. ’CHR$の逆の処理はASCを使います
  3. X=ASC(SHIFT(TEMP$))−14
  4. Y=ASC(SHIFT(TEMP$))−14
  5. HPMAX=ASC(SHIFT(TEMP$))−14
  6. HP=ASC(SHIFT(TEMP$))−14

文字列が1つ

例文では「SAVE$」という名前の変数を使用しています

  1. ’セーブ
  2. SAVE ”TXT:HOGE03.SAV”,SAVE$
  3. ’ロード
  4. SAVE$=(LOAD(”TXT:HOGE03.SAV”))

文字列が2つ以上(並び方固定)

  • 例文では「SAVE1$,SAVE2$」という名前の変数を使っています。
  • ロード方法はしばらくお待ちください

セーブ

  1. TEMP$=SAVE1$+CHR$(10):’空っぽから 始めるので 足し算しない
  2. TEMP$=TEMP$+SAVE2$+CHR$(10)
  3. SAVE ”TXT:HOGE03.SAV”,TEMP$

改行記号に関する注意

プチコン3号の古いバージョンでは、TXTファイルで保存するとCHR$(13)がCHR$(10)に強制的に変換されます。
CHR$()を使って数値やバイナリデータを保存する場合は、この仕様によりデータが化けないようお気を付けください。

コメント

  • 名無しさん : これ数値だけで-21億~21億の範囲ならDATファイルに保存すればいいのでは (2015/01/05 (月) 15:25:31)
  • 天郷思音 : 確かに、でも桁数が少ない場合はファイルサイズのメリットが。 (2016/01/16 (土) 17:20:11)
  • 天郷思音 : あとCHR$(13)の変換に触れてないのはまずい、なので編集。 (2016/01/16 (土) 17:22:11)
  • 名無しさん : これくらいの数バイトのファイルサイズの差よりプログラムや画像データのファイルサイズの違いの方が大きいと思うので簡単な方がいいと思う、http://wiki.hosiken.jp/petc3gou/?Mame%2FHiscore と内容が被っているし (2016/01/16 (土) 23:25:32)
  • 天郷思音 : 他ページとの重複考えてなかった。ファイルサイズは大したことないですね、はい。3号からできたDATファイルを使った方法もどっかに載せたほうがいいかもね。(やる気はないので任せます) (2016/01/17 (日) 10:26:26)
  • 天郷思音 : なおページのタイトルの通りdatはここでは扱いません(別ページ歓迎)Mame/Hiscoreとの統合は、書き進めてしまったので難しいなぁ、と。 (2016/01/17 (日) 10:42:22)
  • 天郷思音 : もともと、このページを作ったのは私ではないのです。なので最初の執筆者の意見も聞きたいところですが…バタバタしてすみません。大幅に変化してしまったので別ページのほうがよろしかったでしょうか… (2016/01/17 (日) 11:20:42)
  • Colder : あまり必要無いと思うが文字列1つが無いので追加。 (2017/08/13 (日) 20:22:54)
  • 天郷思音 : いつの間にか更新されてた。CHR$(13)強制変換仕様は最近のバージョンでは無くなったので一言だけ書き加えた。 (2017/08/14 (月) 18:36:20)
  • 天郷思音 : 誰かがプログラムを修正したようですが、その修正が間違っているので直しました。 (2021/03/28 (日) 16:02:04)
  • 天郷思音 : 文字列と数値の変換は CHR$()⇔ASC() STR$()⇔VAL() という関係なので混同しないようにご注意ください。 (2021/03/28 (日) 16:02:56)
  • 名無しさん : あ、そうなんですか。すみません。 (2021/03/29 (月) 10:03:40)

メニュー 【3号】

ヘルプ

リンク

最近の更新

最近の人気ページ

オンライン情報

  • 現在同時に 1 人がこのサイトを見ています
  • このページはこれまでに 3504 回、本日は 1 回、昨日は 0 回閲覧されました

ページの先頭に戻る

表示モード : [ スマホ・3DS対応表示 | クラシック表示 ]
PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL. Based on "PukiWiki" 1.3 by yu-ji
ページの処理時間 : 0.090 秒 | このページの最終更新 : 2022/09/20 (火) 12:51:42 (565d) | ログイン
Copyright(C) 2011-2014 プチコンまとめWiki ◆1sxkymI8ji30