Last Update : 2009/02/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(マクロ定義でginfo_mesx・ginfo_mesy)で取得できる「メッセージの出力サイズ」や、タイプ22・23(マクロ定義でginfo_cx・ginfo_cy)で取得できる「カレントポジション」を利用して、pos命令に反映させます。(color命令の講座ページにも文字フレーズだけ色を変える実例あり)
// pos命令のY方向はわざと指定してません mes "HSP3" posy = ginfo(14) pos posy mes "HSP" posy += ginfo(14) pos posy mes "mes"
^
半角文字の「\」(円記号/円マーク/日本円)や、引用符の「”」(ダブルクォーテーション/ダブルクオーテーション/ダブルクオート)は、HSPではスクリプト上で特別な記号として扱われます。これらを普通に文字としてウィンドウ上に表示するには「\」を先頭に引っ付けます。
記号 | HSPでの処理内容 | 文字表示 |
\ (円記号) |
改行「\n」やTAB(タブ)スペース「\t」など 特殊な制御文字の先頭に付ける |
\\ |
" (ダブルクォーテーション) |
HSPスクリプト上で文字列の前後 に付ける |
\" |
// 特殊な記号の表示 mes "[\\ \"]" mes "ナレーター: \"むかーしむかしー、あるところにー・・・\"" mes "お値段、ナンと \\1,980!"
HSPのファイル操作関連命令(bsave命令、bload命令、notesave命令、noteload命令、bcopy命令、mmload命令など)で指定するファイルパスの区切り表記に注意が必要です。
// ファイルパスの表記に注意 mes "C:\Program Files\hsp30\hsed3.exe" ; ×ダメ mes "C:\\Program Files\\hsp30\\hsed3.exe"
「{」〜「}」を利用すると、複数行に渡って文字を指定できます。「\n」の改行処理に等しいです。
// 複数行で表示する mes {"複数行 で表示 するーん よーん"}