それでは、ラベルについて解説する時に本来説明すべきとあった命令を紹介します。 その前に、重要な要素でもあるわけですから、ラベルの説明をもう一度だけおさらいしておきましょう。 今回でラベルの解説は終わりにしますが、しつこいように何度も書くのは、 それほど「重要なものでもあるから」ですので、きちんと理解してください。 ラベルは、スクリプト上の目印として存在し、単体ではこれ以上に意味はありません。 しかし、用意された命令を組み合わせると「イベント発生時の処理再開はこのラベル位置から」といった 処理位置自体を制御するための目印にもなります。 ラベル名には、半角「*(アスタリスク)」を先頭に付けて、59バイト以下の英字から始まる英数、 または全角文字列(記号・数値・英字・漢字・カナ等)で構成します。 処理位置の制御にも使用する為、先頭59バイトが同一となるラベル重複は許されていません。 先頭から59バイトまでというのは、ラベルとして判断されるのが先頭から59バイトまでと言うことで、 60バイト目以降が変わっていても同一ラベルとみなされてしまいます。 半角英字の場合、大・小文字は判断されず、大・小文字が違うだけで他は全て同じである場合は、 重複となってしまうので注意してください。 また、ラベル名としては1つであっても変数名との重複も許されていません。 プログラマが分かっていても、指定ワードがラベルなのか変数なのかをHSPは理解できませんからね。 半角記号は含められないと述べましたが、記号の中で使用できる文字が存在します。 それは「_(アンダーバー)」で「*This_is_Sample_Label」のように使用することができます。 「@(アット)」もラベルに使用することができますが、コレだけは少し特殊で他のラベルと異なり、 同一スクリプト内に複数配置(重複)が可能となっており、HSPではローカルラベルと呼ばれています。 他のラベルが重複できないのは、処理の実行先がどのラベルを指しているかが分からないから、でした。 ローカルラベル「*@」はどのようにして目的のラベルを見分けるかと言うと、 コレも他のラベルとは異なり、1つ前もしくは1つ後のローカルラベルにしか移動できないのです。 処理位置の1つ前のローカルラベルは「*@before」、1つ後は「*@forward」と指定するのです。 それでは、ラベルを使った命令を紹介致します。
| goto ジャンプ先ラベル | |||
| ジャンプ先ラベル | 処理の移動先ラベルをアスタリスク付で指定する。 | ||
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
mes "Start !" goto *_2 *_1 mes "1" goto *_4 *_2 mes "2" goto *_1 *_3 mes "3" goto *_5 *_4 mes "4" goto *_3 *_5 mes "Goal !" |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
*one mes "1" goto *two *@ mes "2" goto *three *two mes "3" goto *@b *@ mes "4" // ココは通りません *three mes "5" goto *@f *@ mes "6" |