プログラム制御2

	goto *tobu
	mes "こんにちは!"
*tobu
	mes "って、無視か!"
	stop

HSPではプログラムを書くと上から順番に実行されます。その実行の順番を変えるのが goto命令です。パラメータにプログラムのどこに行くのか指定します。 行き先は、ラベルといわれるものをプログラム中に書きこみ、その行に移動します。 ラベル名は最初に*(アスタリスク)をつけるだけです。ただし、すでにある変数名や命令と同じ名前のラベル名は 作成することはできませんので注意してください。


	mes "こんにちは!"
	gosub *tobu
	mes "あ…ごめん…こんにちは…"
	stop
*tobu
	mes "って、無視か!"
	return

goto命令では、飛んだら飛んだきりでしたが、gosub命令(サブルーチンを実行)では 行って戻ってきます。戻ってくるタイミングはreturn命令で戻ってきます。 gosub - returnはひとつの組み合わせで使うものだと思ってください。サブルーチンと言う言葉に関しては 専門用語解説を参考にしてみてください。


	onexit *owari
	mes "ウィンドウを閉じてください。"
	stop
*owari
	screen 2
	mes "バ〜イバ〜イ!!"
	wait 100

ウィンドウが閉じられるときに作業したい(設定ファイルやデータの保存、終了確認など)ときには onexit命令を使用します。ウィンドウが閉じられるときに指定したラベルに行きます。ここで ファイルの保存などすればよいでしょう。なるべくプログラムの最初にonexit命令を書いておくといいでしょう。 なお、一時的にonexit命令の機能をoffにしたければonexit 0、再びonにするには onexit 1とすれば良いです。


	onclick *click
	stop
*click
	check=wparam
	if check==1 : mes "左"
	if check==2 : mes "右"
	if check==16 : mes "中"
	stop

ウィンドウ内をマウスでクリックされた場合に強制的にラベルに飛ばすには onclick命令を使用します。システム変数wparamに押されたマウスのボタンの 情報が入ります。なお、同時押しの場合はこれらの値が加わったもの(左と右なら1+2=3) になります。また、一時的にonclick命令の機能をoffにしたければonclick 0、再びonにするには onclick 1とすれば良いです。


	onkey *key
	stop
*key
	code=wparam
	mes code
;	chara="" : chara+=code : mes chara
	stop

ウィンドウ内でキーボードが押された場合に強制的にラベルに飛ばすには onkey命令を使用します。システム変数wparamに押されたキーボードの 情報が入ります。この主な情報は
65〜90:a〜z
112〜121:ファンクションキー [F1]〜[F10]
などとなっています。詳しくはgetkey命令のHELPに書いてあります。また、このサンプルプログラムを 実行すれば、どのキーを押すとどんな数字が得られるかは確認できると思います。 なお、同時押しの判定は無いです。また、一時的にonkey命令の機能をoffにしたければonkey 0、再びonにするには onkey 1とすれば良いです。


	onerror *error
	a=1/0
	stop
*error
	if wparam==12 : mes "ファイルがないよ"
	if wparam==13 : mes "画像ファイルがないよ"
	if wparam==19 : mes "0で割っちゃだめだよ"
	stop

エラーが発生したときに強制的にラベルに飛ばすにはonerror命令を 使用します。HSPプログラミングガイド>HSPのエラーに書かれているエラーが 発生した場合、通常はダイアログがでて知らせてくれます。この命令を使用すると そのダイアログはでなくなり、強制的にラベルへ飛ばします。エラー番号は システム変数wparamに入っています。 エラーの表示を独自のものにしたい場合以外は、この命令は使わないほうがいいでしょう。 なお、一時的にonerror命令の機能をoffにしたければonerror 0、再びonにするには onerror 1とすれば良いです。


	time=1
	on time goto *asa,*hiru,*yoru
	stop
*asa
	mes "おはよう" : stop
*hiru
	mes "こんにちは" : stop
*yoru
	mes "こんばんは" : stop

on命令を使用すると数値変数による分岐ができます。 書き方が特殊ですので気をつけてください。 第1パラメータに変数、第2パラメータにgotoまたはgosubと書きます。 ここまではスペースで区切ります(コンマではない) 第3パラメータ(以降)は、ラベルを書きます。ここはコンマで区切ります。 変数が0なら一つ目のラベル、1なら二つ目、2なら三つ目… という風に変数の内容により飛ぶラベルが変わります。ラベルの制限は公開されていませんが 普通に使う分には気にしなくても大丈夫だと思われます。変数がマイナスであったり ラベルが無い場合には、どこにも飛ばずに次の行に進みます。


■ 目次へ戻る ■

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

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