#define NUM_DATA 5		;数字のデータ数
#define STR_DATA 6		;文字列のデータ数
#define STR_SIZE 20		;文字列のデータサイズ

;--------------変数の初期化-----------------
	;必要なだけ数字の配列を作る
	dim a,NUM_DATA

	;それぞれにわかりやすい名前を付ける
	dup hp_max,a.0	
	dup mp_max,a.1
	dup hp,a.2
	dup mp,a.3
	dup money,a.4

	;必要なだけ文字の配列を作る
	sdim b,STR_SIZE,STR_DATA	

	;それぞれにわかりやすい名前を付ける
	dup name,b.0
	sdim aitem,20,4
	dup aitem.0,b.1
	;dup aitem.1,b.2
	;dup aitem.2,b.3
	;dup aitem.3,b.4
	dup save_name,b.5

	button "SET",*set
	button "SAVE",*save
	button "LOAD",*load
	button "VIEW",*view
	stop
;--------------試しに値を入れてみる-----------------
*set
	hp_max=20 : hp=18
	mp_max=10 : mp=10
	money=100

	name="冒険者"
	aitem.0="剣"
	aitem.1="鎧"
	aitem.2="盾"
	aitem.3="謎の巻物"
	save_name="旅の始まり"
	stop

;--------------ファイルに保存-----------------
*save	
	;数字のデータを先に保存
	bsave "save.txt",a

	;文字のデータを続きに保存
	bsave "save.txt",b,,4*NUM_DATA
	stop

;--------------データを読み出す-----------------
*load
	;ファイルの有無をチェック
	exist "save.txt"
	if strsize==-1 : dialog "saveデータがありません。" : stop

	;数字のデータだけを読み出す
	bload "save.txt",a,4*NUM_DATA

	;文字のデータだけを読み出す
	bload "save.txt",b,,4*NUM_DATA
	stop

;--------------試しに表示-----------------
*view
	repeat NUM_DATA
		mes a.cnt
	loop
	repeat STR_DATA
		mes b.cnt
	loop
	stop
変数は数字と、文字列の二種類なので、それを全部配列変数で管理します。後は dup命令で、わかりやすい名前を配列につけます。正確には、配列変数と別に 変数が作成されています。というのは、もし配列変数が必要な場合には aitemのように、先に配列変数を作成してからdupを行ってください。 このとき、配列変数一つ一つにdupを行っても構いませんが、先頭だけやると 残りは自動的に当てはめられます。ただし、何番目まで名前が付けられたかは きちんと管理してください。 後は、普通に名前を付けた変数で処理ができます。気をつけるのは、intやstrといった 命令は使用できません。一度別の変数に移してから行ってください。
実際にセーブやロードを行うのは、先に用意した配列変数で行います。この場合、数字のセーブは 普通に行い、文字のセーブは、数字のすぐ後から続けてセーブしています。 数字は一つ4バイトなので、4×配列変数だけファイルに書き込みます。その後に セーブの場所をその分ずらして(このことをオフセットという)、文字の配列を保存します。
読み出しも同様に、必要な分だけ読み出して、それからずらしてまた読み出す・・・ という方法で行っています。
ただし、これだけだとすぐに数値や文字列がわかってしまうので、 暗号化が必要になるでしょう(^^;
■ 目次へ戻る ■

楽天モバイル[UNLIMITが今なら1円] ECナビでポインと Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!


無料ホームページ 無料のクレジットカード 海外格安航空券 解約手数料0円【あしたでんき】 海外旅行保険が無料! 海外ホテル