なんか作って載せます

繰り返しの処理はよく使われるものらしいです。頑張って使い方を覚えないとね。

第11回:繰り返しについて



 今回は、「繰り返し」についてやります。


 変数や配列変数などを使っている時、よく出てくるパターンがあります。
 それが、「繰り返し」と呼ばれる処理です。

 例えば、次のような場合。
これまでに学んだ「繰り返し」

 「同じことを繰り返すぞ」というメッセージ表示を、iの値をカウントしながら10回繰り返します。
 これでも、mes命令を10個書くよりはよっぽど簡単です。

 しかし、これをさらに楽に書く方法があるのです。

 それがこれ。
新たな「繰り返し」の方法

 ラベルやif命令、変数の足し算などがなくなり、随分シンプルになりました。
 このスクリプトでは、「repeat命令」から「loop命令」までの間を、repeat命令のパラメータで指定した回数分繰り返します。
 repeat命令のパラメータは10となっているので、10回mes命令を繰り返すことになります。

 実行すると、こうなります。
新たな「繰り返し」の方法・実行

 括弧の中の数値は、「cnt」という変数を使って表示されています。
 repeat命令とloop命令を用いた繰り返しでは、常にこのcntという名前の変数が使われます。内容は0から始まり、0、1、2、3……と加算されていきます。

 このように、HSP側が勝手に使っている変数のことを「システム変数」と呼びます。
 システム変数は、普通の変数と同じように命令に指定したり、値を取り出したりすることはできますが、代入はできないそうです。
 システム変数への代入は、HSPの命令が勝手にするらしいので。
 それ以外は、普通の変数と同じです。


 では、繰り返しを再実行してみましょう。

 繰り返しをした後で、さらに前の繰り返しの処理をもう一度したくなったらどうするか。

 単純に考えると、こうなりますね。
繰り返しの再実行

 「甘い栗」を5回表示させ、次に「辛い栗」と1回表示させ、さらにその後、また「甘い栗」を5回表示させる処理です。

 「甘い栗」を5回表示させる処理を、「辛い栗」を1回表示させる処理を挟んでもう一度書いていますね。
 これはちょっと面倒です。
 では、どのようにして効率化するか。

繰り返しの再実行・改

 こうします。

 「甘い栗」を5回表示させる処理は、1つだけになってますね。
 ただ、また新しい命令が出てきてます。

 「辛い栗」と表示させる処理を挟むように、「gosub *amai」という1行があります。
 この「gosub命令」というのは、パラメータで指定したラベルにジャンプする機能があるのです。

 なんだか、前に出てきた「goto命令」と似てますね。
 が、もちろん違う部分があります。

 goto命令は、指定ラベルへ飛んだらそのラベル以降の処理をして終わりでした。
 しかし、このgosub命令は、指定したラベルへ飛んで処理を行った後、戻ってくるのです。

 ラベルamaiの処理の最後に、「return命令」があります。
 これを書いておくことで、gosub命令で飛んで処理を行った後、元のgosub命令まで戻ってきて、その続きを処理します。

 上の例で言えば、ラベルamaiに飛んで「甘い栗」というメッセージを5回表示させた後に戻ってきて、その下の「辛い栗」を1回表示させる処理を行います。
 そしてまた「甘い栗」を5回表示させ、処理が終わるのです。

 このように、gosub命令で指定されたラベルからreturn命令までの間を「サブルーチン」と呼び、そのサブルーチンを呼び出す側を「メインルーチン」と呼びます。
 サブルーチンは、常にメインルーチンから呼び出されるのがルールです。

 上の例で言えば、「甘い栗」と5回表示させる処理(*amai〜returnまで)がサブルーチンです。
 これで、「甘い栗」と5回表示させる処理を複数書く必要がなくなりました。

 便利ですね〜。

 ちなみに、上のスクリプトを実行するとこうなります。
繰り返しの再実行・改・実行


 今回の内容までで、基本というか入門編は終了だそうです。
 もう、簡単なランチャーやCGギャラリー、アドベンチャーゲームなどは作れるようになってるぞということなので、復習がてら何か作ってみようかな。

 あ、次回は次の内容に進みます。


 今回はこれで終わり。


2012/05/12/Sat 更新

inserted by FC2 system