「データ構造」(2006/01/07 (土) 14:24:33) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
*RPGツクール2000とRPGツクール2003
RPGツクール2000とRPGツクール2003は内部的にはほとんど同じものです。
表現の簡略化のため、RPGツクール2000とRPGツクール2003のことを総称して「ツクール」「RPGツクール2000」と呼ぶことにします。
*BER圧縮整数
ツクールの整数データは全て「BER圧縮整数」という形式で保存されています。
BER圧縮整数については以下のサイトを参照
http://www.stellar.ac/~komai/unix/ber/index.html
BER圧縮整数の仕様上負の数は格納できないはずですが、無理矢理unsigned intにキャストされて格納されています(^^;
例)-1 → 4294967295(0xFFFFFFFF)
単に「整数」とあった場合、特に指定のない限りBER圧縮整数のことを指すこととします。
*配列
ツクールのデータの格納方法として一番特徴的なことは配列としての格納です。
ただし配列と言っても配列の中には整数・文字列・生のバイナリデータの全てが格納され、一番厄介なことは配列の中にさらに別の配列データが格納されていることです。ちょうど配列の中に配列がネストされているような感じです。このせいでツクールのデータ構造はかなり複雑になっていますorz
ツクールでは1次元配列と2次元配列の2種類が使用されています。
**1次元配列
基本的には
> 配列番号(整数)
> データサイズ(整数)
> データ部分
> 配列番号(整数)
> データサイズ(整数)
> データ部分
> …
の構造です。生データの中に整数や文字列や別の配列データが入っています。
例)
:整数データ|01 01 02 → 01(配列番号:1) 01(データサイズ:1) 02(データ部分)
:文字列データ|02 04 54 45 53 54 → 02(配列番号:2) 04(データサイズ:4) "TEST"
注意)
-配列バッファ内には終端の'\0'(NULL)は含まれていない
-文字列はShift-JISで格納
:バイナリデータ|47 84 58 00 00 … → 47(配列番号:71) 84 58(データサイズ:600) 00 00…(データ部分)
配列番号は1から始まります。配列番号に0がきた場合、そこが配列の終端となります。
配列番号が省略された場合、その番号のデータは基本的には0が補完される与えられるが、0以外で補完されることもけっこうあるので注意
**2次元配列
基本的には1次元配列の時と同じですが、
> 2次元配列の親要素の要素数(整数)
> 2次元配列の親要素の配列番号(整数)
> 2次元配列の子要素(1次元配列)
> 2次元配列の親要素の配列番号(整数)
> 2次元配列の子要素(1次元配列)
> …
といったように格納されています。
*RPGツクール2000とRPGツクール2003
RPGツクール2000とRPGツクール2003は内部的にはほとんど同じものです。
表現の簡略化のため、RPGツクール2000とRPGツクール2003のことを総称して「ツクール」「RPGツクール2000」と呼ぶことにします。
*BER圧縮整数
ツクールの整数データは全て「BER圧縮整数」という形式で保存されています。
BER圧縮整数については以下のサイトを参照
http://www.stellar.ac/~komai/unix/ber/index.html
BER圧縮整数の仕様上負の数は格納できないはずですが、無理矢理unsigned intにキャストされて格納されています(^^;
例)-1 → 4294967295(0xFFFFFFFF)
単に「整数」とあった場合、特に指定のない限りBER圧縮整数のことを指すこととします。
*配列
ツクールのデータの格納方法として一番特徴的なことは配列としての格納です。
ただし配列と言っても配列の中には整数・文字列・生のバイナリデータの全てが格納され、一番厄介なことは配列の中にさらに別の配列データが格納されていることです。ちょうど配列の中に配列がネストされているような感じです。このせいでツクールのデータ構造はかなり複雑になっていますorz
ツクールでは1次元配列と2次元配列の2種類が使用されています。
**1次元配列
基本的には
> 配列番号(整数)
> データサイズ(整数)
> データ部分
> 配列番号(整数)
> データサイズ(整数)
> データ部分
> …
の構造です。生データの中に整数や文字列や別の配列データが入っています。
例)
:整数データ|01 01 02 → 01(配列番号:1) 01(データサイズ:1) 02(データ部分)
:文字列データ|02 04 54 45 53 54 → 02(配列番号:2) 04(データサイズ:4) "TEST"
注意)
-配列バッファ内には終端の'\0'(NULL)は含まれていない
-文字列はShift-JISで格納
:バイナリデータ|47 84 58 00 00 … → 47(配列番号:71) 84 58(データサイズ:600) 00 00…(データ部分)
配列番号は1から始まります。配列番号に0がきた場合、そこが配列の終端となります。
配列番号が省略された場合、その番号のデータは基本的には0が補完される与えられるが、0以外で補完されることもけっこうあるので注意(マップの大きさなど、ツクールの初期値が補完されることがある)
**2次元配列
基本的には1次元配列の時と同じですが、
> 2次元配列の親要素の要素数(整数)
> 2次元配列の親要素の配列番号(整数)
> 2次元配列の子要素(1次元配列)
> 2次元配列の親要素の配列番号(整数)
> 2次元配列の子要素(1次元配列)
> …
といったように格納されています。
表示オプション
横に並べて表示:
変化行の前後のみ表示: