2019.06.05作成
2019.06.10更新
制御と分岐に関する命令は、以下の23の命令があります。
@LABEL
GOTO
GOSUB
RETURN
ON GOTO
ON GOSUB
ON BREAK GOTO
IF THEN ELSE
CASE WHEN ENDCASE
LOOP ENDLOOP
FOR TO NEXT
WHILE WEND
REPEAT UNTIL
CONTINUE
BREAK
END
STOP
DEF END
DEFARGC
DEFARG
DEFOUTC
DEFOUT
CALL
@
意味
プログラムやデータの位置を示す名前です。
引数にラベルを使用する命令は下記の通りです。(分かってる限りで)
・GOTO
・GOSUB
・RESTORE
例
@ENEMY_TYPE
用途
主に、データベースを構築する場合に「ここにそのデータがありますよ!」と印をつけておく目的で使用します。
一応、GOTO命令やGOSUB命令を使用し、関数のようにも使用できますが、個人的にはそのような使用を制限し、関数を使用する場合はDEFを使用するといいと思ってます。(関数を検索する場合に検索窓にDEFと打ち込めば済むようになるため)
使用頻度
高
GOTO
意味
指定したラベル位置にジャンプします。
ラベル位置の指定は、文字列変数でも可能です。
別スロットのプログラムのラベル位置にもジャンプできますが、その場合は対象のプログラムをEXEC命令で先に読み込んでください。
例
GOTO @A
A$="@A"
GOTO A$
GOTO 2:@B
用途
基本的に使用しないほうがいいと思ってますが、個人的な主観です。(俗に言うスパゲッティコードの元となる)
デバッグで、作成した処理部分まで飛んでテストしたい時とかに使えるかも知れません。
使用頻度
普通
GOSUB
意味
指定したラベル位置にジャンプします。
ラベル位置の指定は、文字列変数でも可能です。
別スロットのプログラムのラベル位置にもジャンプできますが、その場合は対象のプログラムをEXEC命令で先に読み込んでください。
GOTO命令と違い、RETURN命令でGOSUBの次の命令に戻ってきます。
例
GOSUB @A
A$="@A"
GOSUB A$
GOSUB 2:@B
用途
サブルーチン呼び出しのように使用できますが、やはりスパゲッティコードの元になるため、
使用しないようにしたほうがいいのかもしれません。(個人的な主観です。)
ただし、それはGOSUBにできて、DEFでできないことがある場合に限ります。
再利用するモジュール(当たり判定を行い、結果を返すものなど)を作成する場合は利用せず、
再利用しないモジュール(1つのモジュールを短くするために作成されたモジュールなど)を作成する場合は使ってもいいかも知れません。
使用頻度
普通
RETURN
意味
直前に使用したGOSUB命令の次の命令に処理を移します。
例
RETURN
用途
GOSUB命令とセットで使用します。
使用頻度
普通
ON 式 GOTO @ラベル0,@ラベル1...@ラベルn
意味
式が0になったらラベル0にジャンプ、式が1になったらラベル1にジャンプ、式がnになったらラベルnにジャンプします。
式の結果は数値でなければいけません。
ラベル位置の指定は、普通のGOTO命令とは異なり、文字列変数での指定はできません。
例
ON IDX GOTO @JMP_A,@JMP_B
@JMP_A
A%=1
@JMP_B
B%=1
用途
状態遷移などに使えそうな形ですが、GOTOはGOTOなので、あまり使用は勧めないです。
使用頻度
低
ON 式 GOSUB @ラベル0,@ラベル1...@ラベルn
意味
式が0になったらラベル0にジャンプ、式が1になったらラベル1にジャンプ、式がnになったらラベルnにジャンプします。
式の結果は数値でなければいけません。
ラベル位置の指定は、普通のGOSUB命令とは異なり、文字列変数での指定はできません。
例
LOOP
ON IDX GOSUB @JMP_A,@JMP_B
ENDLOOP
@JMP_A
A%=1
RETURN
@JMP_B
B%=1
RETURN
用途
たしかDEF命令で定義した関数を使用してON-GOSUB命令のように分岐するのはやりにくかったように思うので、
状態遷移で使っていってもいいのかも知れません。(調査中)
使用頻度
普通
ON BREAK GOTO @ラベル
意味
ユーザがプログラムを停止させようとしたときのジャンプ先を登録します。
例
ON BREAK GOTO @FINISH
@START
LOOP
PRINT "MAINFUNC"
ENDLOOP
@FINISH
ON BREAK GOTO @FINISH
GOTO @START
用途
+ボタンを効かないようにしてみたりできるかも?
※ただし、+ボタン長押しは強制停止なのでその場合は制御不可。
+ボタンで先頭から再度実行したいときに使えるかも。
使用頻度
低
![]()
意味
例
用途
使用頻度
![]()
意味
例
用途
使用頻度
![]()
意味
例
用途
使用頻度
![]()
意味
例
用途
使用頻度
![]()
意味
例
用途
使用頻度
![]()
意味
例
用途
使用頻度