プログラム制御

	stop

HSPではプログラムが最後まで進んでしまうと勝手に終わってしまいます。そこでプログラムの流れを止めるのに stop命令を使用します。かといってプログラムの最後に使うことはほとんど無く、 button,on〜 命令の後に使用されるのがほとんどだと思います。


	mes "3秒待ってね!"
	wait 300
	mes "はい!三秒!"
	stop

プログラムの流れを一時中断するにはwait命令を使用します。 指定できる最小時間は100分の1秒(0.01秒)単位ですので注意してください。


	a=1
	if a<0 {
		mes "aはマイナスです"
	}
	else {
		mes "aは0以上です"
	}
	stop

条件によって作業を変えるにはif命令を使用します。条件判断の方法は他にもあるので HELPを参考にしてください。また、講座内のちょっと難しい話?でも 条件判断について詳しく解説しているので参考にしてください。条件に当てはまった場合に行う作業は {}で囲まれた部分の作業をします。 else命令はifの条件に当てはまらなかった場合にこちらの作業をします。 elseは条件判断に必ず必要な命令ではありません。必要に応じて 使用してください。


	a=1
	if a<0 : mes "aはマイナスです" : else : mes "aは0以上です"
	stop

if命令の書き方が先ほどと少し違いますが、条件判断の後の作業が 少ない場合には、:(コロン)で区切って同じ行に命令を書いていってもかまいません。 このとき、else命令を使用する場合も同じ行に:で区切って書きます。


	repeat 5
		mes "あははは"
	loop
	stop

同じ事を繰り返すにはrepeat - loop命令を使用します。 この命令は必ず組み合わせて使います。パラメータには繰り返しの回数を指定します。 また、ここで書いているようrepeat - loopの間ではさらにtabを使って どこからどこまでが繰り返しなのか分かりやすくするといいと思います。


	repeat 5,1
		mes "cnt="+cnt
	loop
	stop

repeat - loop命令を使用する際にはcntというシステム変数を 使用すると便利です。 システム変数は、HSPがすでに用意している変数で僕らは変数の中身を見ることができても =を使って値を入れることはできません。cntは、繰り返しをするたびに1ずつ増えていきます。 第2パラメータでcntの初期値を指定することができます。省略した場合は0からになります。


	repeat 11,-5
		if cnt==0 : continue
		mes "cnt="+cnt
	loop
	stop

例えば-5〜5まで繰り返し作業したいけど0は作業したくない…というときには ループをやり直すcontinue命令を使用します。


	repeat
		a=cnt*cnt
		if a>100 : break
		mes ""+cnt+"×"+cnt+"="+a
		wait 1
	loop
	stop

repeat命令の第1パラメータを省略すると無限ループになります。 繰り返し作業が終わりません。 無限ループにする際は、必ずwait 1またはawait 1を入れてください。HSPを終了できなくなります。 必ず短時間でループを抜ける保証がある場合は入れなくてもかまいません。 この際第2パラメータの指定は可能です。
repeat ,1
このように書きます。 また途中でループを抜け出すにはbreak命令を使用します。主に条件判断 をして繰り返しの必要がなくなった場合に使うと思います。


	repeat 6
		mes cnt
		await 1000
	loop
	stop

プログラムの流れを(ほぼ)正確に待つにはawait命令を使用します。 1000分の1(0.001)秒単位で時間の指定ができます(waitは0.01秒単位)。 しかし、ゲームなどの速度調整以外ではあまり使用しないほうがいいでしょう。 詳しくはちょっと難しい話?のawaitとwaitの項目を参考にしてください。


	repeat ,-5
	if a>0 : end
	mes "a="+a : wait 100
	stop	

HSPでは最後まで行くとプログラムが勝手に終わりますが、途中でプログラムを終了 させたい場合にはend命令を使用します。例ではaの値がプラスになったら終了します。


■ 目次へ戻る ■

Gポイントポイ活 Amazon Yahoo 楽天

無料ホームページ 楽天モバイル[UNLIMITが今なら1円] 海外格安航空券 海外旅行保険が無料!