時間を扱う
今までに1つだけ時間を扱う命令を使いましたね。
そう、プログラムの時間を止めるstop命令です。
この命令を使うとそのまま止まり続けてしまいました。

少しの間だけ止まってほしい時には「wait」命令または「await」命令を使います。
この二つはほぼ同じような動きをするのですが、
wait命令では指定した値の単位は10ミリ秒です。
つまりwait 100」で1秒となります。
await命令はwait命令の10分の1で単位は1ミリ秒です。
つまり「await 1000」で1秒となります。
await命令は高精度で細かいウエイトが可能ですが、wait命令よりもCPUのタスクを消費します。
アクションゲーム等の高速な処理が必要な場合はawait命令、
デスクトップアクセサリ等の常駐ソフトはwait命令、と使い分けましょう。
前章の繰り返しの所の補足説明ですが、repeat命令のパラメータ1を省略すると無限ループになります。
こういった無限ループや時間の掛かる処理をする際にウエイト命令を入れておかないと、
Windowsのタスクを占有してしまいHSP内の処理はおろか、
他のアプリケーションやパソコン自体の動作に影響が出てしまいます!
以上のことを踏まえた上で繰り返しとウエイトを使ったスクリプトを書いてみましょう。
「metronome.wav」を初めにDLしHSPのフォルダに入れてください。
	sndload "metronome.wav",0
	repeat ; 無限にループ
		wait 50 ; 0.5秒止まる(この時間をいろいろ変えてみてください)
		snd 0
	loop ; repeat-loopを抜けることはないのでstop命令はいらない
さぁウエイト命令はこの辺で置いておいて、 次はシステムの時間(画面の右下にある時計の時間)の取得について説明していきます。 命令名は「gettime」です。 今まで使ってきた命令のパラメータは、数値または文字列を入れてきましたが、 今回のgettime命令はp1に変数を指定しなければなりません。 使ってなさそうな変数名を作ってp1に指定してあげればOKです。 このp1の変数は一体何に使うのかと言いますと、p2で設定したタイプの値が自動的に入るのです。 p2で何を設定するのかと言いますと、次のような取得したいタイプを数値で設定してあげます。 0で「 年 」を取得し、p1で指定した変数に代入します(2001年なら2001が入ります) 1で「 月 」を取得し、p1で指定した変数に代入します(10月なら10が入ります) 2で「 曜日 」を取得し、p1で指定した変数に代入します(日曜は0,月曜は1…土曜は6が入ります) 3で「 日 」を取得し、p1で指定した変数に代入します(19日なら19が入ります) 4で「 時 」を取得し、p1で指定した変数に代入します(20時なら20が入ります) 5で「 分 」を取得し、p1で指定した変数に代入します(35分なら35が入ります) 6で「 秒 」を取得し、p1で指定した変数に代入します(10秒なら10が入ります) 7で「ミリ秒」を取得し、p1で指定した変数に代入します(345ミリ秒なら345が入ります)
	gettime yy,0
	gettime mm,1
	gettime dd,3
	mes "今日は" + yy + "年" + mm + "月" + dd + "日です"
	stop
あと時刻を表示させればデジタル時計ができそうですね。 p2の曜日取得はチラッと書きましたが、日曜日が曜日の一番初めで0になります。 曜日だけは表示させるのが厄介ですよね…。 取得した曜日は数値なのでそのまま使うと「今日は2曜日です」みたいなわけわからない状態になります。 if文で0の場合は「日曜」と表示、とでもしておきましょう。(配列を使うと楽チンですが…まぁ次章で)
	gettime wd, 2
	if wd = 0 : weekday = "日"
	if wd = 1 : weekday = "月"
	if wd = 2 : weekday = "火"
	if wd = 3 : weekday = "水"
	if wd = 4 : weekday = "木"
	if wd = 5 : weekday = "金"
	if wd = 6 : weekday = "土"
	mes "今日は" + weekday + "曜日です"
	stop
随分短かかったので最後にrun命令を紹介しておきましょう。 実行中のプログラムを別のオブジェクトファイル(〜.ax)に変えるもので書式は「run "ファイル名"」です。 〜.axファイルの作成はHSPスクリプトエディタメニューの「HSP(P)」の中にある 「オブジェクトファイル作成(B)」(F9でもできる)。 オブジェクトファイルは「start.ax」と同様のものです。 実行するとウィンドウとか開いていても元のほうの情報は破棄されてしまいますので気をつけてください。 HSP2.6ではrun命令のパラメータ数が変更しています。 2.6以降を使用されている方は2.6用の講座をご利用ください。 一応基本は同じで2.6用では基本的な話はしませんので…。
	run "sample.ax"