Hallo HSP World!
はじめに。
『Hallo』は『Hello』の書き間違いではありません…とそんな話ではなくて、
この章からはHSPの命令を紹介していきますが、使い方は下記の様に示しております。
[命令名] [パラメータ]
[パラメータ]パラメータに書くべき事柄のヒント
大文字小文字は問いませんが、命令名は固定で一字たりとも間違えないようにしてください。 パラメータ(引数とも言う)とは、命令に渡す値のことで、基本的に何を書くかはアナタが自由に決めますが、 パラメータに書くべき事柄のヒントに沿って1行目の赤字の構文をスクリプトエディタに記述しましょう。 命令とパラメータの間には区切りの半角スペースが入ってますが、1つ以上であれば幾つあってもOK。 このようなスペースや改行は、スクリプトのデータとして保存時にハードディスク容量を消費しますが、 実行ファイルとして出来上がったものは、例え余分に改行を100万行入れたとしても同じサイズになります。 適度な余白を入れて見易さを考慮するようにしましょう。 命令の説明のすぐ下には、提示命令を使用したサンプルが書くようにしています。 使うときの書き方がわからない場合は参考にしてみてください。 サンプルスクリプトには後で説明しやすいように行番号を左端に振っています。 サンプルをコピーしてエディタに貼り付ける際は一緒に貼り付けてしまわないように注意してください。 マイクがちゃんと使えるかを確認する際「あ、あ、マイクテストマイクテスト」なんてことを言います。 プログラムでも始めて触り、自分の目で正常動作していることを知るために 文言を表示させるだけの単純プログラム「Hello World.」というものを聞いたことはないですか? この章では慣習通り、そのメッセージを表示させるだけの単純プログラムから始めてみましょう。 HSPでは文字ベースのコンソールアプリケーションの作成も可能ですが、 デフォルトはどこにでも見かけるグラフィカルなウィンドウを作成するものとなっています。 下記の構文をスクリプトエディタに打ち込むことで、メッセージが表示できます。
mes "メッセージ"
"メッセージ"表示させるメッセージ内容(※ダブルクォーテーションで囲む)
 1
 2
 3
 4
	mes "123"
	mes 123
	mes "Hallo"
	mes Hallo
「メッセージ」はダブルクォーテーションで囲むと書いていますが、 2行目のように数桁程度の数値であれば囲まなくても同じ結果が確認できることと思います。 しかし、同じ様に3行目に書いているテキストのような文字列を4行目のように書いたとしても 「0」と表示されて「Hallo」とは表示されませんね。 コレは次章で詳細に説明する変数と呼ばれるものとHSPは認識してしまう為です。 変数とは何か…と言う説明は次章にまわすとして、 とりあえず今は数値以外のテキストはダブルクォーテーションで囲むと覚えましょう。 実はHSPウィンドウ上にメッセージを出力する命令がmes命令以外にもう1つ用意されてます。 動作から目的まで全てが何一つ変わらず同じ、異なるのは命令名称だけと言うものです。
print "メッセージ"
"メッセージ"表示させるメッセージ内容(※ダブルクォーテーションで囲む)
字の如くウィンドウ上にメッセージをプリントすると言う意味ですね。 mes命令は「message」の略式ですがソレだと覚え辛いという方や、 print命令の方がわかりやすいという方はprint命令を使ってください。 ただ、やはりmes命令の方が字数が少なく書きやすいからか、print命令を使う方はあまり聞きません。
 1
 2
 3
 4
	print "print命令もmes命令も全く一緒。"
	mes "それでも混在させると見辛いから統一することを推奨します。"
	print "ちなみに管理人アルティメットはmes命令派です。"
	mes "ということで、これから先のメッセージ出力は全てmes命令です。"
サンプルやご自分で書いてみたスクリプトを実行してみて何か思いませんでしたか? mes命令やprint命令を使用すると、ウィンドウ左上端にメッセージが出力されました。 複数回使用すると、前回のメッセージ直下に出力され、書いた順と同じく上から順に出力されましたね。 HSPではウィンドウ内のどの位置を基準点としてメッセージを出力するかを内部的に保持しているのです。 このメッセージ出力の開始点をカレントポジションと読んでいます。 今開いているフォルダのことをカレントディレクトリやカレントパスと呼ぶのを聞いたことありませんか? 「現在の〜」という意味でHSP以外でも常習的に使用されています。 メモ帳などのエディタだと、キーを押すと文字が出力されるわけですが、 表示される位置はキャレットと呼ばれるカーソルのある位置となっていますね。 HSPウィンドウではカレントポジションにこのキャレットが見えませんが、 mes命令やprint命令を使用するとテキストの高さ分下にカレントポジションが移動します。 コンソールアプリケーションではメッセージを出力するだけなので、上から順に表示するだけで良いですが、 グラフィカルなGUIウィンドウアプリケーションでは様々な位置に出力したいものです。 時には中央に、時には前回より上の位置に、等々…。 この出力位置、カレントポジションを変更するものとしてpos命令があります。
pos X座標, Y座標
X座標左端を0としたピクセル単位の横方向の座標
Y座標上端を0としたピクセル単位の縦方向の座標
この命令は2つのパラメータを持っていますのでパラメータ間は半角コンマで区切ってください。 数学で習った、または習うことと思いますが、Xは横方向の位置、Yは縦方向の位置を示しています。 左ほど座標が小さく右ほど座標が大きいのは数学のグラフと一緒です。 しかし、縦は上ほど小さく下ほど大きいとなっていて通常の座標とは反転していますね。 コレは、タイトルバーを基準として高さを考えるからこのようになるのでしょう。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
	pos 40, 250
	mes "移動テスト"
	pos 175, 90
	mes "2回目の出力テスト"
	pos , 130
	mes "X省略テスト"
	pos 340,
	mes "Y省略テスト"
	pos -50, 400
	mes "マイナス指定も可能ですが、切れてしまいますよ"
1行目で現在のカレントポジションの変更を行っています。 (40, 250)と言われてもどの辺りなのか、10増やすとどこまでいくのかイメージしにくいと思いますので、 参考までに書いておくと起動したウィンドウのサイズは640×480、文字サイズは16となっています。 2行目でカレントポジションを1文字目の左上端としてメッセージを表示していきます。 2行目の表示が終わった段階でカレントポジションは先程の下に移動しています。 高さ15ピクセルの文字だと(40, 265)になっている感じですね。 もう一度メッセージ表示をすると、この(40,265)を1文字目の基準座標とするわけですが、 3行目で再度変更した後、4行目で次のメッセージを表示しています。 5行目でさらにカレントポジションを変更していますが、X座標を省略してY座標だけ130としていますね。 pos命令はパラメータを省略すると、省略前の状態を保持します。 ですので、省略されたX座標は前回と同じ175となり、カレントポジションは(175, 130)になります。 7行目でもパラメータを省略していますが、今度はY側を省いています。 座標は(340, 130)か、というとそうではありませんね。 メッセージを出力し終えるとカレントポジションは文字の高さ分下へ移動すると書きました。 厳密には文字の高さ+文字間の余白となるわけですが、大体(340, 146)位になります。 9行目ではマイナス座標を指定していますが、こういうのもアリです。 ただ、普通にメッセージを表示させるだけでは途切れてしまうだけである為、意味ありませんがね。 こんな感じで次章からも命令の説明を行っていきます。