Last Update : 2007/07/xx
指定した文字列を表示する命令です。「表示」というより「描画」という表現の方が正確かと思います。命令名の由来は、「message」(メッセージ)から。
mes "文字列"
全くの同機能でprint命令がありますが、mes命令の使用が推奨されています。これは単純に命令名の文字数が少ないというだけで、どちらを使用しても内部的には全く同じです。処理スピードに違いはありません。
関連する命令にtext命令があります。これは文字を指定した速度で一語一語づつ表示するための表示スピード指定を行う命令です。HSP2では標準命令としてサポートしてましたが、HSP3ではこの命令は削除されてます(互換としてモジュール命令が用意されてる)。
^
簡単にサンプル。文字の描画位置はpos命令で指定します。pos命令を指定しないで、そのままmes命令が呼ばれると、文字の描画位置が改行されて表示されます。1度のmes命令で改行を行うには「\n」(改行コード)を指定します。
; 表示位置 pos 50, 100 mes "あいうえお!" mes "かきくけこ!" mes "さしすせそ!\nたちつてと!"
文字の表示色はデフォルトで黒色です。別の色に変更したい場合は、color命令やsyscolor命令を利用します。もし、文字の背景色を指定したいならば、たとえばboxf命令で四角形を塗りつぶし、その上にmes命令を描画させる形にします。
color 255, 0, 0 mes "Red (赤)" color 0, 0, 255 mes "Blue (青)" ; 緑色の四角形 color 0, 255, 0 boxf 0, 35, 100, 60 color 255, 255, 255 mes "White (白)"
文字の大きさやフォントを変更したい場合は、font命令やsysfont命令を利用します。フォントの名前は、アルファベットの半角と全角を区別して正確に記述する必要があります。
font "MS 明朝", 40, 1 mes "でっかい文字!" font "MS Pゴシック", 10 mes "ちっちゃい文字!" ; このフォントは日本語不可。 font "Impact", 15, 4 + 1 mes "Hot Soup Processor!" ; こんな風に工夫すると影付き文字 font "MS UI Gothic", 40, 1 pos 102, 102 color 20, 20, 20 mes "HSP講座!" pos 100, 100 color 255, 0, 0 mes "HSP講座!"
^
一番最初に「描画」と書きましたが、同じ位置に文字列を再び描画すると、そのまま上に被さるような形になります。新しい文字に自動で書き換えてくるわけではないので注意が必要です。もし、描画された文字列を消したい場合は、四角形塗りつぶしを行うboxf命令を利用して「消去」の処理を用意します。(この時、redraw命令を利用して表示のちらつきをなくす)
// 文字がどんどん重なっていって・・・ font "", 100 repeat pos 50, 50 mes cnt wait 50 loop
// 解決法 font "", 100 repeat ; 描画を一時的に停止 redraw 0 ; 白色で四角形塗りつぶし (わざと一部分) color 255, 255, 255 boxf 50, 50, 100, 150 ; 黒色で文字描画 color pos 50, 50 mes cnt ; 実際に描画を反映 redraw wait 50 loop
上に書いたようにmes命令を呼べば文字の描画位置はそのまま改行されます。直前の文字の真後ろ描画するには、ginfo関数のタイプ14と15で取得できる「メッセージの出力サイズ」を利用します。これをpos命令に反映させてやればいわけです。
// Y方向はわざと無指定 mes "HSP3" posy = ginfo(14) pos posy mes "HSP" posy += ginfo(14) pos posy mes "mes"
^
半角文字の「\」(円記号)や、引用符の「”」(ダブルクォーテーション)は、HSPではスクリプト上で特別な記号として扱われます。普通に文字としてウィンドウ上に表示するには、「\」を先頭に付けます。HSPのファイル操作関連命令(bsave命令、bload命令、notesave命令、noteload命令、bcopy命令、mmload命令など)ではファイルパスの表記に注意が必要です。
| 記号 | HSPでの処理内容 | 文字として表示 |
| \ (円記号) |
改行の「\n」やTABスペースの「\t」など、 特殊文字の先頭に付ける |
\\ |
| " (ダブルクォーテーション) |
HSPスクリプト上で文字列の前後に付ける | \" |
; 特殊な記号の処理 mes "[\\ \"]" mes "ナレーター: \"むかーしむかしー、あるところにー・・・\"" mes "お値段、ナンと \\1,980!" mes "C:\\Program Files\\hsp30\\"
; 複数行で表示する
mes {"複数行
で表示"}
mes {"複数行
で表示
するーん"}