ラベル/[ goto ]

さて、goto命令を学ぶ前に、プログラムの流れについて確認しておきます。
まずHSPは、
1、スクリプトの1行目を実行
2、スクリプトの2行目を実行
3、   ・
4、   ・

というように、1行目から順番に実行していきます。

(右図参考)






この流れを変えるのが、プログラム制御命令です。

しかし、wait命令やawait命令では、この流れを遅らせるだけでしたし、
stop命令は中断させるだけ、end命令は終了させるだけで、流れの方向を変えることは出来ませんでした
goto命令を使用することにより、この流れを変えられます。

右図で示すように、
スクリプト内のある地点からある地点まで、制御を移すことができます。

(“制御を移す”とは、
 HSPがプログラムを読む流れを変更するということです。)




この図では、2行目から4行目に制御を移しています。

この場合、2行目でgoto命令を使います。


そして、4行目には、ラベル[label]という目印を書きます。

そうすることで、goto命令は、そのラベルまで飛ぶことが出来るのです。


ここまで理解出来たら、ラベルを作成してみます。

ラベルは *(アスタリスク)の後に、ラベル名を書くだけです。

*label

ラベル名の規則は、変数名のときと同じです。


それでは、goto命令の詳細です。

 goto p1

p1 : ラベル名


指定したラベルに無条件でジャンプします。
以降は、ラベル名で指定された場所から実行を続けます。





この場合、goto *jump から、 ラベル *jump まで、ジャンプします。

mes "Bさん:本当は欲しくないけど・・・"
の行が実行されていないのが、分かりますね。


goto命令はとても便利な命令ですが、乱用するとゴチャゴチャになってしまうので、気をつけて下さい。

ちなみに、このゴチャゴチャになった状態を“スパゲッティ”などと呼ぶことがあります。


 




// Copyright (C) 2001-2007 NegativeCelcius. All Rights Reserved. //