プログラムの流れを変えてみようと。
というわけで全く新しい項目です。今回はラベルについて記述します。
ラベルとは、いわゆる目印、旗などに例えられます。ラベルを用いることでプログラムの流れをちょっとだけ変えることが出来ます。
*labelA
mes "ここはlabelAです。"
goto *labelB
mes "でもって――"
*labelB
mes "ここはlabelBです。"
上のサンプルを実行してみてください。3つのmes命令がありながら、表示されているのは2行分しかありませんね? そして、表示されていないのはでもって――のはずです。これは、mes "ここはlabelAです。"の後、*labelBにジャンプしたため、mes "でもって――"はすっ飛ばされ、*labelBのmes "ここはlabelBです。"が実行されるわけです。矢印をちょこっと加えて説明するとこんな感じ。
このように、まさにラベルは目印の様な働きをしています。
さて、とあるラベルに移動することをジャンプ、または日本語で飛ぶと言います。この例では*labelAから*labelBにジャンプして(飛んで)いるわけです。このジャンプを行う命令は、goto命令です。
goto *label
*label : 飛び先のラベル
気付いているとは思いますが、ラベルの名前は"*"(アスタリスク)に続けて指定します。変数と同じように、アルファベット59文字以下です。また、ラベルは必ず行頭に書く必要があります。つまり、ラベルの所はインデントしてはいけません。(今のスクリプトエディタは自動で行頭に移動してくれます)
ちなみに、今実行中のラベルと同じラベルを飛び先に指定すると無限ループを作ることが出来ます。実験してみても良いですが、その時はwait命令で待ち時間を作ってください。動作に支障を来します。
*infinite
mes "ラベルで無限ループー"
wait 10
goto *infinite
終わらないので適当なところで終了させてください。
さて、ラベルの使用用途は、単純なジャンプ、サブルーチンジャンプ(今は説明しません)、button命令の飛び先などがあります。button命令は比較的よく使う命令ですが、説明はもう少し後になります。
Last Modified: 2008-08-15