[目次へ][前へ][次へ][表紙へ]
 ループ

例.スペースキーの入力をチェックするプログラム

	mes "スペースキーを押すとウィンドウが閉じます"
*Input_Space
	await 16
	getkey key, 32
	if key == 0 { goto *Input_Space }
	end

*Input_Space

 プログラムの任意の行に名前をつけることができます。これをラベルといいます。"*"に続けてラベル名を書きます。ラベルだけ字下げしません。こうすることによってラベルを目立たせることができます(これが今まで命令を字下げして書いてきた理由です)。

	goto ラベル

 プログラムは上から下に実行されていきますが、その流れを変えたい場合があります。"goto ラベル"はそのラベルの行に飛べという命令です。読んで字のごとく"go to"、「へ行け」という意味です。飛んだ先のラベルの下から実行されます。

 上のプログラムはスペースキーが押されているかチェックし、押されていなかったら*Input_Space行に戻れという意味です。このように、同じ個所をぐるぐる繰り返すものをループといいます。

	await 時間(ミリ秒)

 指定した時間待ちます。待っている間、制御はWindowsに移っています。パソコンはHSPのプログラムだけを処理しているわけではありません。前にWindowsもアプリケーションもプログラムでできていると書きましたが、Windowsのプログラムも同時に処理していますし、Internet Explorerを起ち上げていれば、その処理も行っています。Windowsを処理する時間を与えてあげないと、ウィンドウがドラッグしにくくなったりします(起こる現象は環境によって異なるかもしれません)。
 上記のプログラムのように長時間ループする部分を作った場合には、awaitを入れる必要があります。16ミリ秒という数字は、今は意味はありません。20でも30でも構いません。

	getkey 変数名, キーコード

 この命令が実行されたその瞬間のキーの状態を調べます。どのキーの状態を調べるかをキーコードで指定します。キーコードとはキーボードの各キーに割り振られた番号のことです。スペースキーのキーコードは32です。
 押されていれば1、押されていなければ0を変数に代入します。

	end

 プログラムを終了します。プログラムは最終行が実行されると終了となります。しかし、ウィンドウは開いたままです。end命令で明示的にプログラムの終了を指示した場合はウィンドウが閉じます。
 プログラムの途中にend命令があった場合にはその箇所で終了します。

補足
・goto文の乱用
 goto文を無駄に多用するとスパゲッティ・プログラム(スパゲッティのようにごちゃごちゃと絡まった分かりにくいプログラム)になります。
 
・CPU
 今まで「パソコンがプログラムの命令を処理している」という書き方をしてきましたが、命令を実行しているのはパソコンのCPU(中央演算処理装置)という装置です。

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