配置位置について
4ページ目からHSPウィンドウ上にテキストを表示している。
1つのスクリプトで複数のテキスト表示命令を使うと、
同じ場所に上から塗りつぶすようにはならなくて1行分下に表示されたよね?
この表示させる位置のことをカレントポジションと言って、
メモ帳などのエディターで例えるならば、「文字を入力するとココに入るよ」と
いう目印になる縦棒の、今までチカチカと呼んでいたキャレットのことだ。
このカレントポジションは目には見えないけれど初めは(0,0)となっている。
…で表示させると、カレントポジションは表示文字の高さ分下の
先ほどのカレントポジション位置に移動する。
コレはHSPの機能の1つで自動的に位置を変えてくれるというものだ。
自動的ではなく手動で表示位置を変えたい場合もあるはず。
特に左端や、上側からだけではなく真ん中や右のほうに表示したい
そういった場合、表示位置を変更する命令を使うとよい。
命令名はposで、指定するパラメーターは「pos X位置,Y位置」と
posと半角スペースで空けて座標(ドット単位)をコンマで区切って指定する。
Xは横方向の座標で右に行くほど大きく、左に行くほど小さい。
コレは通常の数学でのグラフ座標と同じだね。
Yの方は違うのでキッチリ覚えておいてね。
どう違うかと言うと上に行くほど小さく、下に行くほど大きいということだよ。
ウィンドウの初期サイズは640×480ドットなので上記の感じだね。
プラスの値しか出てきてないけどマイナス値も指定できるんだよ。
マイナスの値やウィンドウサイズよりも大きな値を指定すると、
当然だけど文字が切れちゃったり見えなくなったりするからね。
さぁそれではpos命令を使ってテキストを表示してみて。
…うまく表示できた?
何も表示されないんだけど、とか言わないでね?
パラメーターがウィンドウ外の位置で表示されなかったというのはいいけど、
ウィンドウ内のはずなのに何に変えても表示されないってパターン。
もう一度書くけどpos命令は「カレントポジションを変更する命令」。
テキストを表示する命令ではないよ?
mes,print命令を使わなきゃ表示はされないんだよ。
講座としてサンプルを示さないわけにはいかないので書くことにする。
pos 50,100 : mes "座標(50,100)を開始点かいしてんにして表示させてみるテスト"
pos 400,20 : mes "右端がウィンドウ外に飛び出して切れてしまうもの"
pos 320,416 : mes "下の方に表示させてみるテスト"
stop
6ページで書いたマルチステートメントを使っているよ。
このmes命令はこの位置に表示する
というものを明示的に分かりやすくしているんだ。
pos命令のパラメータを省略したらどうなるのだろう?
エラーとはならず、以前の位置となるんだね。
X,Y両方が以前の位置となるのではなく、
省略したパラメータ側だけが以前の位置となるんだよ。つまり、
pos 123, : mes "abcdefg"
pos ,50 : mes "xyz"
stop
1つ目だとY側が省略されているので、以前の位置となるのだが、
以前の位置がないので、初期値の0が入り「123,0」となる。
2つ目はX側だけ省略されているので、Xには前回のXである「123」が入る。
つまり位置としては「123,50」となる。
1つ目もそうなのだが、間の区切りコンマはあってもなくても同じだ。
3つ目は両方ないので、そのままの「123,50」となるはずだが、
既に1つ前にmes命令があるので、1行下となる。
明示的つながりで命令じゃないけどコレも書いておこう。
明示的にスクリプト内容を書くというものにコメントというものがある。
コメントとは、プログラムの内容を自分なりに分かりやすく注釈するためのもの。
いわゆるメモ書きってモノで何を書いても実行されない。
自分(プログラマー)にわかればいいので書式やルールといったものはないよ。
ただ、どこからどこまでがコメントなのかを示さなければならない。
大きく分けて2つの書き方があるのだが、
1つはコメントの開始ポイント以降はその1行が全てコメントとなるもの。
最大でも1行分しかコメントにならないのでコメントの終了は書かなくてよいのだ。
…というか終了ポイントの書き方がないので書けないのだが…。
開始点には「;(セミコロン)」又は「//(ダブルスラッシュ)」を書く。
もしmes命令で表示させるテキストの中にセミコロン等を書いた場合、
それ以降はコメントになって表示されなくなっちゃうの?
って疑問が湧く方に言っておくと、
ダブルクォーテーションで囲まれた中に書くものはコメントとはならない。
pos -4,111 : mes "ダブルクォーテーション内に;を書いてみる" ; ←「を書いてみる」は表示される
// コレはコメント
stop
//は、他言語でよく見かけるけど、HSPはバージョン2.6から使えるようになったものだ。
;と記述以外全く同じなので好きな方を使えばよいだろう。
さぁ、もう1つの書き方とは複数行を一気にコメントに出来るもので、
開始ポイントに「/*」に、終了ポイントに「*/」を書くんだ。
コレも他言語で見かける書き方でHSPでは2.6から使えるようになったものだ。
デバックの中はココからココまでは不必要だという時に活用しよう。
abc=123
/*
if abc=123 {
pos 200,300 : mes "本番はこの処理を実行する"
} else {
pos 100,100 : mes "一瞬で終了"
end
}
*/
stop
複数行コメントの分かりやすい書き方として、
下記のような書き方をよく見かけるよ。
/************************
* *
* コメントを書いておく *
* *
*************************/
全部が全部こんな書き方では
コメントを書くだけで時間が掛かってしまい大変なのだが、
処理単位で書く大きなコメントなどでこういう書き方をすれば効果的だ。
逸れてしまった話を元に戻そう。…といってももうおしまいなのだが。
現段階ではテキスト表示命令でしか位置を変えても意味がないのだが、
pos命令はテキスト以外でも画像やボタンや入力ボックスなど
ウィンドウ上に表示するあらゆるものの配置位置を決定するものである。
覚えておこう。
はい、以上でこのページのレクチャーを終わろうと思う。
前ページまでと比べて非常に短かったのだが、
もう1つの入門講座のように詰め込んだりということは出来るだけしない。
作るのもしんどいだけだしね^^;