2019.05.27作成
2019.06.04更新
変数と配列に関する命令は、以下の22の命令があります。
DIM
VAR
SWAP
INC
DEC
COPY
RINGCOPY
SORT
RSORT
PUSH
POP
UNSHIFT
SHIFT
FILL
TYPEOF
ARRAY%
ARRAY#
ARRAY$
RESIZE
INSERT
REMOVE
INSPECT
DIM
意味
変数や配列を定義できます。
後述のVARと全く同じ意味の命令になります。
式の結果が初期値になります。
配列にせずに式が省略された場合、それぞれ下記のようになります。
・%をつけると整数型ゼロに初期化
・#をつけると実数型ゼロに初期化
・$をつけると空文字列に初期化
・なにもつけないとデフォルト数値型ゼロに初期化
配列にして式が省略された場合、それぞれ下記のようになります。
・%をつけると整数配列を作成
・#をつけると実数配列を作成
・$をつけると文字列配列を作成
・なにもつけないとデフォルト数値型配列を作成
例
DIM A
DIM B%
DIM C#
DIM D$
DIM E=0,F=1,G=2
DIM H%=3
DIM J#=4.444
DIM K$="ご"
DIM L[6]
DIM M%[7,8,9,10]
DIM N#[11,12,13]
DIM P$[14,15]
DIM Q[]
DIM R[5]=[0,1,2,3,4]
DIM S%[5]=[5,6,7,8,9]
DIM T#[5]=[0.1,0.02,0.003,0.0004,0.00005]
DIM U$[5]=["マーニャ","ミネア","トルネコ","ライアン","ピサロ"]
DIM V[]=[0,1,2]
用途
とにもかくにも変数がないとなにも始まりません。ライフだって変数、スコアだって変数です。
使用頻度
高
VAR
意味
変数を定義できます。
前述のDIMと全く同じ意味の命令になります。
式の結果が初期値になります。
式が省略された場合、それぞれ下記のようになります。
・%をつけると整数型ゼロに初期化
・#をつけると実数型ゼロに初期化
・$をつけると空文字列に初期化
・なにもつけないとデフォルト数値型ゼロに初期化
配列にして式が省略された場合、それぞれ下記のようになります。
・%をつけると整数配列を作成
・#をつけると実数配列を作成
・$をつけると文字列配列を作成
・なにもつけないとデフォルト数値型配列を作成
例
VAR A
VAR B%
VAR C#
VAR D$
VAR E=0,F=1,G=2
VAR H%=3
VAR J#=4.444
VAR K$="ご"
VAR L[6]
VAR M%[7,8,9,10]
VAR N#[11,12,13]
VAR P$[14,15]
VAR Q[]
VAR R[5]=[0,1,2,3,4]
VAR S%[5]=[5,6,7,8,9]
VAR T#[5]=[0.1,0.02,0.003,0.0004,0.00005]
VAR U$[5]=["マーニャ","ミネア","トルネコ","ライアン","ピサロ"]
VAR V[]=[0,1,2]
用途
とにもかくにも変数がないとなにも始まりません。経験値だって変数、ゴールドだって変数です。
使用頻度
高
SWAP
意味
2つの変数に入っている値を交換します。
例
SWAP A,B
SWAP C[1],D[2]
用途
たとえば、どうぐコマンドで、手動で並びかえをするときにアイテムIDを入れ替えることで並びかえたりできます。
敵と主人公のHPを交換するときにも使えるでしょう。
他にも様々な用途があります。
使用頻度
高
INC
意味
変数に入っている値に対して、式の結果を加算します。
式を省略した場合は、1を加算します。
※参照型命令のため、参照型は扱い注意
例
INC A
INC B,5
INC SCORE,100
INC SCROLL#,0.5
用途
スコアを増やしたりする場合などに使用できます。
画面をスクロールさせる場合などにも使用できるでしょう。
他にも様々な用途があります。
使用頻度
高
DEC
意味
変数に入っている値に対して、式の結果を減算します。
式を省略した場合は、1を減算します。
※参照型命令のため、参照型は扱い注意
例
DEC A
DEC B,5
DEC HP,ATTACK
DEC MP,3
用途
HPを減らす場合などに使用できます。
MPを減らしたりする場合にも使用できるでしょう。
他にも様々な用途があります。
使用頻度
高
COPY
意味
①配列をコピーします。
左から順番にコピー元、オフセット数、要素数です。オフセット数を省略すると0になります。要素数を省略するとコピー元要素数-オフセット数になります。
②文字列をコピーします。
左から順番にコピー元、オフセット数、文字数です。
オフセット数を省略すると0になります。
文字数を省略するとコピー元要素数-オフセット数になります。
③配列の内容を他の配列にコピーします。
COPYの返値を使用しません。
左から順番にコピー元、オフセット数、コピー先、オフセット数、コピー要素数です。
オフセットを省略すると0になります。
要素数を省略するとコピー元要素数-オフセット数になります。
1次元配列に限り、コピー先配列がコピー元配列より要素数が足りない場合に自動拡張します。
コピー先、コピー元が多次元配列だったとしても、1次元配列として扱います。
④DATA列で定義されたデータを順番に配列に読み込みます。
COPYの返値を使用しません。
左から順番にコピー先、コピー先オフセット、@ラベル文字列、コピーデータ数です。
コピー先オフセットを省略すると0になります。
コピーデータ数を省略した場合コピー先配列の要素数が指定されます。
DATAで定義した数がコピーデータ数より少ない場合エラーとなります。
⑤文字列の一部または全部を、他の文字列変数にコピーします。
左から順番にコピー先文字列変数、コピー先オフセット、コピー元文字列、コピー元オフセット、コピー文字数です。
コピー先オフセットを省略すると0になります。
コピー元オフセットを省略すると0になります。
コピー文字数を省略するとコピー元文字列の文字数からコピー元オフセットを引いた数になります。
例
①
DIM A%[5],B%[5]=[0,1,2,3,4]
A% = COPY(B%)
A% = COPY(B%,1)
A% = COPY(B%,1,2)
②
DIM A$,B$="エスターク"
A$ = COPY(B$)
A$ = COPY(B$,1)
A$ = COPY(B$,1,2)
③
DIM DST%[5],SRC%[5]=[0,1,2,3,4]
COPY DST,SRC
COPY DST,1,SRC,1,2
④
DIM DST%[5]
COPY DST,"@SRC"
COPY DST,1,"@SRC",2
@SRC
DATA 1,2,3,4,5
⑤
COPY A$,"12345"
COPY A$,1,"12345",1,2
用途
データベースを作成する場合などに使用できます。
また、データベースに作成しておいた敵情報を、戦闘用の作業領域にコピーして使う場合などに使用できます。
使用頻度
高
RINGCOPY
意味
配列をリングバッファとみて、そこにデータをコピーします。
左から順番にコピー先配列、コピー先オフセット、コピー元配列、コピー元オフセット、コピー要素数です。
コピー先よりもコピー元の要素数が多い場合、コピー先の先頭へ折り返してデータをコピーします。
コピー先、コピー元共に2次元配列まで指定できます。2次元配列を指定した場合、マルチチャンネルのリングバッファとして扱います。
コピー先、コピー元両方に2次元配列を指定した場合、双方のチャンネル数は同じにする必要があります。
コピー先が2次元配列、コピー元が1次元配列の場合、コピー元のデータがコピー先データの全チャンネルに同じようにコピーされます。
※コピー先、コピー元が同じ配列だった場合の動作は保証できません。
コピー元オフセットを省略した場合、0になります。
コピー要素数を省略した場合、コピー元の要素数になります。
例
DIM DST%[5],SRC%[10]=[1,2,3,4,5,6,7,8,9,0]
RINGCOPY DST%,0,SRC%
RINGCOPY DST%,1,SRC%,2,5
用途
不明。リングバッファを使うこと自体はよくあるが、一括でコピーする状況というのは経験上ない。有効な使い道の情報求む。
使用頻度
低
SORT
意味
配列を昇順で並び替えます。
左から順番に、開始位置、要素数、配列1,配列2〜配列8です。
開始位置を省略した場合、0になります。
要素数を省略した場合、配列1の要素数になります。
配列2〜配列8は省略できます。
配列1を並び替え、それに連動して配列2〜配列8が並び替えられます。
配列2〜8は文字列配列でも可能です。
例
DIM A[5]=[3,5,1,2,4],B(省略)
SORT A
SORT 1,3,A,B,C,D,E,F,G,H,I
用途
どうぐをID順に並べ替えたりする場合に使用できます。
使用頻度
高
RSORT
意味
配列を降順で並び替えます。
左から順番に、開始位置、要素数、配列1,配列2〜配列8です。
開始位置を省略した場合、0になります。
要素数を省略した場合、配列1の要素数になります。
配列2〜配列8は省略できます。
配列1を並び替え、それに連動して配列2〜配列8が並び替えられます。
配列2〜8は文字列配列でも可能です。
例
DIM A[5]=[3,5,1,2,4],B(省略)
RSORT A
RSORT 1,3,A,B,C,D,E,F,G,H,I
用途
武器を攻撃力が高い順に並べ替えたりする場合に使用できます。
使用頻度
高
PUSH
意味
配列の末尾に要素を1つだけ追加します。
左から順番に配列、式です。
※参照型命令のため、参照型は扱い注意
例
DIM A[5]
PUSH A,123
用途
どうぐぶくろに、アイテムをひとつ入れたりする場合に使用できます。ただ、使いにくければ無理して使用する必要はないと考えます。
使用頻度
普通
POP
意味
配列の末尾から要素を取り出し、要素を1つだけ減らします。
取り出した要素は返値になります。
※参照型命令のため、参照型は扱い注意
例
DIM A[3]=[1,2,3]
POP A
B=POP(A)
用途
罠に引っかかったら所持してるアイテムの一番後ろを落っことすみたいな時に使えるかも?(大事なものを落としたら積むね
)
使用頻度
普通
UNSHIFT
意味
配列の先頭に要素を1つだけ追加します。
左から順番に配列、式です。
例
DIM A[5]
UNSHIFT A,321
用途
不明。いい使い方求む。
使用頻度
低
SHIFT
意味
配列の先頭から要素を取り出し、要素を1つだけ減らします。
例
DIM A[3]=[1,2,3]
SHIFT A
B=SHIFT(A)
用途
不明。いい使い方求む。
使用頻度
低
FILL
意味
配列内容をすべて指定値に設定します。
左から順に配列、値、オフセット、要素数です。
オフセットと要素数で部分的な変更も可能です。
配列の型は、整数、実数、文字列いずれでも問題ありません。
オフセットは省略できます。
要素数は省略できます。
例
DIM A[1000]
FILL A,0
FILL A,1,1,998
用途
配列の初期化に使用すると便利です。FILLを使用しない場合、複数行で繰り返し文を使用することになります。
使用頻度
高
TYPEOF
意味
値の型を調べます。
値の型に応じて、次のいずれかの数値が返ります。
#T_DEFAULT デフォルト型 0
#T_INT 整数型 1
#T_REAL 実数型 2
#T_STR 文字列型 3
#T_INTARRAY 整数配列 5
#T_REALARRAY 実数配列 6
#T_STRARRAY 文字列配列 7
例
A = TYPEOF B
用途
デバッグで主に活用できます。
想定した型となっていない場合はSTOPと組み合わせて処理を止めるなどできます。
使用頻度
普通
ARRAY
意味
配列を作成します。
例
DIM A%,B#,C$
A% = ARRAY%[10]
B# = ARRAY#[10,20]
C$ = ARRAY$[10,20,30]
用途
動的に配列を作成したいとき?
使いたくなる時はほぼ無いが、とりあえず覚えておくといつか役に立つかも知れない。
使用頻度
低
DIM
意味
変数の定義にも同名の命令を使用しますが、こちらは別物と捉えてください。
このDIMは、配列の次元数や、各次元の要素数を調べることができます。
左から順番に、配列、次元です。
次元を省略すると、配列の次元数が返ります。
例
VAR A[10,20]
DIM(A)
DIM(A,1)
DIM(A,2)
用途
デバッグに使えるかも。
意図した配列の次元数、要素数になっていないかどうか調べる時に役に立ちそうです。
使用頻度
低
RESIZE
意味
配列の要素数を変更します。
拡張部分の要素には、0または空文字列が入ります。
配列定義時に一番最初に書いた要素数のみ変更でき、それ以外は変更できません。
次元の変更はできません。
例
DIM A[5],B,[10,10]
RESIZE A,10
RESIZE B,5,5
用途
用途不明。
使用頻度
低
INSERT
意味
1次元配列に要素を挿入します。
左から順番に、配列、挿入位置、要素数、初期値です。
挿入位置を0にした場合、先頭に挿入します。
要素数を省略した場合、1になります。
初期値を省略した場合、0や空文字列になります。
例
DIM A[5]
INSERT A,0
INSERT A,2,3,5
用途
用途不明。
使用頻度
低
REMOVE
意味
1次元配列の要素を削除します。
左から順番に、配列、削除位置、要素数です。
削除位置を0にした場合、先頭から削除します。
要素数を省略した場合、1になります。
例
DIM A[5]
REMOVE A,0
REMOVE A,2,3
用途
用途不明。
使用頻度
低
INSPECT
意味
値の詳細情報を表示します。
型、値、配列の場合、要素数と、全要素の値を表示します。
文字列リテラル・文字列変数の場合は、文字列の長さも表示します。
文字列の内容が長すぎる場合は、途中で文字列が省略されます。
INSPECTの代わりに??と省略できます。
例
INSPECT A
?? "12345"*10
用途
デバッグで使用できます。
意図したデータの内容となっていない場合に、中身を見ることで解決につながるかも知れません。
使用頻度
普通