AX

電霊ログ

私のやってるサイト、電子の言霊の活動ログ

カテゴリークラウド

タグリスト

最近のトラックバック

月別アーカイブ(タブ)

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  • [HSP超入門] ラベル3

また間が開いてしまいました。
気を取り直してレッツラゴー!

前回までで覚えたラベルの使い方は、ラベルへ跳んだら跳びっぱなしで戻ってきませんでした。これは goto が片道切符だからです。今までの知識だけで戻って来られる様にするには片道切符が2つあれば良さそうですね。

*top
mes "ここは先頭"
goto *label
stop

*label
mes "ジャンプ先だよ"
wait 50
goto *top


stop 命令を入れていますがこれは実行されません、ラベルジャンプによって
*label へ行っているのを明確にする為に入れているだけです。それから無限ループになるので wait を入れています。

下の様にボタンを使った時は、stop で止めているので wait は要りません。*top の位置を button 命令よりも上にしてしまうと、ボタンを押すたびにボタンが作られていくおかしな状態になるので注意。

button "ボタン",*label
*top
stop

*label
mes "ジャンプ先だよ"
goto *top


ラベルが1つや2つなら、片道切符で行ったり来たりしても良いのですが、
ラベルが10個や20個になりさらにラベルジャンプを繰り返したりすると、もう訳が分からなくなってしまいます(本当に)。
*a から *c へ *c から *a へ *a から *b へ *b から *d ....続く。などという具合に 考えただけで恐ろしくなります。
ではどうすれば訳が分からなくなりにくいのか、それはジャンプした後 直ぐに元の場所へ戻って来ればいいのです。しかしそんな事をしようとすると それこそもっと沢山のラベルが必要になりそうな気がしますね。
でも安心して下さい。HSPには初めからそういう事が簡単に出来る便利な命令が用意されています。それが gosub 命令です。goto が片道切符なら gosub はいわば往復切符の様な物ですね。
gosub (ゴーサブ と読む)命令のパラメーターは goto と同じでジャンプ先のラベルを1つ指定します。そしてジャンプ先で return (リターンと読む)命令を呼び出せば元の場所へ戻る事が出来ます。

mes "ここがスタート"
gosub *label
mes "ここが終わり"
stop

*label
mes "ジャンプ先だよ"
return


重要なポイントは、gosub 命令によって *label に跳んだ後 return で元の場所へ戻ってきて、その後何事も無かったかの様にさっきの続きから実行している所です。
ちゃんと元の場所に戻って来れているので、
「 ここがスタート
  ジャンプ先だよ
  ここが終わり  」
という順番で表示されます。

ここで gosub を使う上で注意する事が1つあります。gosub は往復切符ですので、ジャンプした先で return をせずに goto を使って戻ったりしていると、帰り道分の切符が使われずにどんどんたまってしまいます。10枚や20枚ならまだ良いのですがこれが128枚を超えると、HSPがこれ以上持てんわー!!と怒こってエラーを出してしまいます。
「エラーになるサンプル」

*top
gosub *label

*label
wait 1
goto *top
return


と言う事なので、gosub を使った時は必ず return で戻るようにしましょう。
と、ここまで gosub について説明して来ましたが、何でもかんでも gosub にすれば良いと言う事ではなく、goto の方が良い場面も沢山あります。自分のやりたい事に応じて一番上手く行きそうな方を選んで使って行って下さい。
関連記事

コメント

コメントの投稿

   管理者にだけ表示を許可する
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。