[目次へ][前へ][次へ][表紙へ]
 サブルーチン

 同じような処理をする箇所がいくつもある場合、これを1つにまとめると便利です。その処理を1つのまとまった塊とし、メインとなる処理とは分けるのです。これをサブルーチンと呼びます。サブルーチンに対して、メインとなる処理をメインルーチンと呼びます。
 サブルーチンはメインルーチンからgosub文で呼ばれます。gosub文はgoto文と同じで、指定したラベルの場所に飛ぶのですが、サブルーチンのreturn文によって、呼んだ場所に戻る点が違います。
 サブルーチンは通常メインルーチンの後ろに書きます。

 指定された文字列を、フォントが大きさ16のMS 明朝の、白い文字で表示するサブルーチンの例です。表示する座標をmsx、msyに、文字列をmessageに入れてからgosub文で呼びます。

	;
	;メインルーチン
	;
	
	screen 0, 640, 480
	
	color 0, 0, 0
	boxf 0, 0, 639, 479
	
	pos 188, 408
	color 0, 255, 255
	font "Times New Roman", 72
	mes "HSP SAMPLE"
	msx = 64 : msy = 64
	message = "こんにちは"
	gosub *Write_Message
	msx = 128 : msy = 96
	message = "今日はいい天気ですね"
	gosub *Write_Message
	msx = 192 : msy = 128
	message = "明日もいい天気でしょう"
	gosub *Write_Message
	stop
	
	;
	;サブルーチン
	;
	
	;メッセージの表示
*Write_Message
	;msx,msy	: 表示する座標
	;message	: メッセージの内容
	pos msx, msy
	color 255, 255, 255
	font "MS 明朝", 16
	mes message
	return

実行結果

	pos x座標, y座標

 mes命令で文字列を表示する座標を指定します。文字列の左上隅の座標です。

	stop

 プログラムを止めます。終わらせるのではありません。止めるのです。DVDプレイヤーの一時停止ボタンを押したかのように、その場で止まったままになります。
 これがないと、その下の部分まで実行されてしまいます。

補足
・標準のフォント
 自分のパソコンにどんなフォントが入っているかは、例えばメモ帳の「書式」→「フォント」で確認できます(Windows7の場合)。
 フォントを使う際に、自分のパソコンには入っているが、他人のパソコンには入っていないという場合もあり得ます。入っていない場合、HSPの既定の(「デフォルトの」と言います)フォントで表示されます。どのパソコンにも共通して入っているフォントについては「Windows 標準 フォント」で検索してください。
 
・サブルーチン内の変数
 変数は、プログラム全体を通して一つの用途に使うものだけとは限りません。その場限りの、一時的な用途でしか使わない変数は、同じ変数名がいろいろな場所で、別の用途で使われます。iやjやkといった変数名は、そういう一時的な役割で使うことが多いです。サブルーチンの中でそういった変数名を使っていると、メインルーチンの中で別の用途で使っていた場合、値をサブルーチンの中で変えてしまうかもしれません。サブルーチンの中ではいかにもあちこちで使いそうな変数名を使うなとは言いませんが、メインルーチンで使っている変数の値をおかしくしてしまわないよう、注意して下さい。
 悪い例
 変数iをメインルーチンとサブルーチンとで、別の用途で使っています。サブルーチン中のiを別の変数名にすれば正しく動作します。

	;1の2乗 + 2の2乗 + …… + 10の2乗を計算し、変数answerに代入する
	answer = 0
	i = 1
*Calc
	number = i
	gosub *Nijyou
	answer += square
	i++
	if i <= 10 { goto *Calc }
	mes "答は" + answer + "です。"
	stop

	;numberの2乗を計算しsquareに返すサブルーチン
*Nijyou
	i = number
	i = i * number
	square = i
	return

[目次へ][前へ][次へ][表紙へ] inserted by FC2 system