HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0102
かきbsaveによる複数の変数を保存12解決


かき

リンク

2015/1/2(Fri) 14:00:37|NO.66804

現在、hsp3dishでゲームを作成しているのですが
bsaveを使った複数の変数を保存する方法がわかりません。

具体的にはsave.txtという一つのファイルに
a=10
b=20
この二つの変数を保存したいと思っています。

配列変数なども試してみましたが
保存されていなかったり、最後に保存した変数の数値が全ての変数の数値になっていたりと
不明な点ばかりでした。

どなたかわかる方がいらっしゃればお答えいただきたいです。



この記事に返信する


いわいわ

リンク

2015/1/2(Fri) 16:03:47|NO.66807

;こんな感じで、どうでしょうか?
#include "hsp3dish.as"
dim c,3
a=10 : b=20

c(1)=a : c(2)=b ;配列Cに変数を代入

bsave "save.txt" , c ;サーブ

c(1)=0 : c(2)=0 ;配列Cに0を代入

bload "save.txt" , c ;ロード

redraw 0
mes c(1) : mes c(2) ;配列を表示
redraw 1

stop



かき

リンク

2015/1/3(Sat) 13:59:27|NO.66830

ご回答ありがとうございます。
教えていただいた通りに試してみたら
きちんとなりました。
ありがとうございました。



ZAP

リンク

2015/1/3(Sat) 15:16:51|NO.66832

蛇足かも知れませんが、
保存するときのファイル名の拡張子に「txt」は避けるべき。

bsaveはバイナリファイルで保存するので、そもそもテキストではありませんし、
保存したファイルを開くとテキストエディタで開くことになるのであまり意味をなしません。



cats

リンク

2015/1/3(Sat) 15:46:44|NO.66833

HSPの配列変数はタプルでも何でもないので複数の型を保存できませんよ。
ファイルにデータを付加する関数を作ったほうが汎用性があります。



y.tack

リンク

2015/1/3(Sat) 17:55:01|NO.66836

> ファイルにデータを付加する関数を作ったほうが汎用性があります。
汎用的なデータ には僕もしてみたいですが
イマイチ 上手く形にならなくて

catsさんが書いたらどうなりますか?

> データを付加する
データを読み込んで分岐するんじゃなく
アドレスを読んで 分岐するのが良い
みたいに書いてたのを読んだことがあるんですが
イマイチ理解できなくて
アドレス先を読むを実装すると どうなるのかな?って
疑問に思っています

お前んちのカレー 卵入ってんの?みたいな比喩されてたような
ってググったらでてきましたw
http://blog.bugyo.tk/lyrical/archives/1537



GrapeColor

リンク

2015/1/3(Sat) 18:39:38|NO.66837

作ったけど誰も反応してくれなかった私のプラグインを是非使ってください・・・
http://hsp.tv/play/pforum.php?mode=all&num=65425



cats

リンク

2015/1/3(Sat) 18:41:29|NO.66838

>catsさんが書いたらどうなりますか?
う〜ん、難しいですね。
まずセーブデータのフォーマットを企画しなくてはなりません。
実は少し前に私の周りで、ゲーム等のセーブデータを簡単に操作できるモジュールを作ろうという話しがでました。
これはHSPではないのですが、テキストや数値だけでなく画像も保存できるようにしようと難易度を挙げてしまい、あまり進んでいません。
HSPで実装しようと思うと、
・配列変数の区切りをどう判別するか。
・未知の型の変数をどう保存、読込するか。
・大量のデータをどう判別するか。(各データにコメントを付ける?)
・暗号化はどの階層で行うべきか。
・いかにデータサイズを小さくできるか。
といった問題に直面すると思います。

>アドレスを読んで分岐する
保存される各データを、それぞれアドレスで飛ばしてから読み込ませるとなると厄介ではないでしょうか。
ファイルサイズが可変である以上アドレスの数値自体も可変です。
なのでアドレスを固定サイズで保存すると面倒なことになりそうです。

バイナリは楽しいのでフォーマットを考え始めると実装したくなりますね。



cats

リンク

2015/1/3(Sat) 18:43:42|NO.66839

> GrapeColor さん
INIは確かにセーブデータとしてよく使われている気がします。
ただ、バイナリデータを保存できないという難点や、サイズが大きくなってしまうという点もあります。
大量のデータを保存しないのであればINIもいいですね。



GrapeColor

リンク

2015/1/3(Sat) 19:00:20|NO.66841

>>catsさん
何故か途中で話が大きくなっていますが、スレ主さんの用途だと十分役立つと思うのですが・・・。



y.tack

リンク

2015/1/3(Sat) 21:14:23|NO.66846

一つ気になるのは
一回「データを付加する」して表現すると
それを取り除くのは非常に難しい
みたいに書いてた事です

>HSPの配列変数はタプルでも何でもないので複数の型を保存できませんよ。
ダブルはpeek/pokeでint二つで利用できます
文字列もできそう
モジュール変数は非常にややこしくなりそうですが^^;



cats

リンク

2015/1/3(Sat) 22:39:02|NO.66847

>取り除くのは非常に難しい
それこそINIのようにデータ+名前で保存すれば名前を元に簡単に取り出せます。
ただ、配列変数をそのまま保存して、そのまま読み込みたいとなると、ややこしいです。

>ダブルは〜
タプルです。
NO.66807で配列に代入してから保存されていたので、これでは複数の型が入れられないと。
pythonやC++11とかだとタプルが使えるんですけどね。



かき

リンク

2015/1/7(Wed) 16:43:20|NO.66915

なんだか久しぶりに来てみたら、すごいレスが……。

GrapeColorさんのプラグインを試してみたのですが
使い方が良くわかりませんでした。
初心者ですみません。



ONION software Copyright 1997-2023(c) All rights reserved.