3-1.繰り返し

回る回る――(以下略


さて、第3章「基本編」の一発目は『繰り返し』です。

繰り返しというのはそのままの意味で、同じ処理を何度も繰り返すという意味です。今のところはただ繰り返すだけで意味はないのですが、将来的には結構使います。また、ゲームなどのハイスコアを記録したものとか、ランチャーのアイテムとかそういうのを取得する際にも繰り返しを使うのですが、まあそれは置いといて。

繰り返しをするのに最も基本的な命令はrepeatloop命令です。繰り返しの始めにrepeatを書いて、終わりにloopを書きます。

	repeat times, cntStart

times : 繰り返す回数
cntStart : システム変数cntのスタート値
	loop

(パラメータ無し)

このrepeatloopの間に何らかの処理を書きます。loopに来るとrepeatの所に戻ります。

命令説明にあったcntについては後で説明するとして、とりあえず例を。


    repeat 5
        mes "繰り返し繰り返し"
    loop

これを実行すると、画面には繰り返し繰り返しという文字が5回表示されます。repeat命令の第1パラメータは繰り返す回数を指定します。この例では5となっているので5回表示されるわけです。

これに関して、この例でやってはいけないのはこの5を消すことです。第1パラメータがマイナスもしくは省略された場合、無限ループとなります。無限ループというのはその名の通り止めるまで永遠に続くループ(繰り返し)のことです。5を消すと省略されたことになるので無限ループになるのですが、このプログラムで無限ループをやるとHSPが反応しなくなります。Windowsそのものに影響は与えませんが。詳しい理由を知りたいのならHSPのプログラミングマニュアルの「HSPのタスク」を見てください。

ちなみに、第1パラメータを0にすると中を実行せずにloopの所まで飛びます。

さて、先ほど登場したシステム変数cnt。そもそもシステム変数というのは何かというと、そのままの意味でシステム側が扱っている変数です。こちら側(ユーザー)は参照することは出来ても変更することは出来ません。命令の成功・失敗や実行状況等々の情報が入っています。多分一番使うのはstatrefstr辺りじゃないかと思います。――で、cntもそのシステム変数なわけです。

cntループカウンタと呼ばれます。何回繰り返しているかを示している変数です。cntloopに辿り着くと1増えます。repeat命令の第2パラメータは、このcntの初期値を設定するものです。特に何も指定しなければ0から始まります


	repeat 5
		mes ""+cnt
	loop

実行するとまず0、次に1……最後に4と表示されます。cntは0から始まっているので5回繰り返したら最終的に4になりますね。

最後におまけです。repeatloop命令の途中でループを抜ける(ゲームのキー入力待ちとかで良くあることです)場合はbreak命令を使います。


	repeat 5
		mes "cnt = "+cnt
		if cnt = 2 : break
	loop
	mes "脱出完了"

この例では3回目のループで抜けます。repeat 5で5回繰り返すはずが3回で終了していますね?

逆にループ途中でループをやり直すのはcontinue命令です。


	repeat 5
		if cnt = 2 : continue
		mes "cnt = "+cnt
	loop

ヘルプのサンプルそのまんまですが。cntが2の時だけループがやり直されます(=repeatに戻る)。continue命令を使ってもcntは増えるので、上の例を実行するとcnt = 2だけが表示されません。


Last Modified: 2008-08-15