メッセージウィンドウを実装します。
ユーザー定義命令で、ウィンドウを表示する命令"window"と、メッセージを表示する命令"message"を作ります。
window p1,p2,p3,p4 は座標(p1,p2)を左上の座標とした、幅p3、高さp4のウィンドウを表示する命令です。
message p1 は文字列p1をメッセージウィンドウに表示する命令です。
半透明のウィンドウを表示するには、gmodeを3に指定してgcopyを使います。
モード3は、4番目のパラメーターで指定したブレンド率による半透明合成コピーを行なうモードです。
ブレンド率は0〜256の値を指定でき、256で完全なコピーになります。
黒く塗りつぶした裏画面を用意しておいて、その画面を半透明コピーすることでウィンドウを表示します。
裏画面を塗りつぶす色を変えれば、青いウィンドウなどにする事もできます。
下のサンプルではスペースキーでメッセージを表示します。
buffer 1,96,32 picload "maptip.bmp" //半透明ウィンドウ用の背景 buffer 2,300,110 color 0,0,0 //ウィンドウの色 boxf 0,0,300,110 screen 0,320,320 font "MS ゴシック",12 //メッセージのフォントを指定 dim map,10,10 *main gosub *keyEvent gosub *drawMap redraw 1 :wait 5 :redraw 0 goto *main #module //ウィンドウを表示する命令 #deffunc window int x,int y,int wid,int hei gmode 3,0,0,128 pos x,y gcopy 2,0,0,wid,hei color 255,255,255 line x,y,x+wid,y line x,y+hei line x+wid,y+hei line x+wid,y return //メッセージを表示する命令 #deffunc message str m window 30,250,260,60 //ここで、上で定義したwindowを使用 pos 40,260 mes m redraw 1 repeat //スペースキーが押されるまで待機 stick key if key = 16:break wait 1 loop redraw 0 return #global *keyEvent stick key if key = 16 :message "スペースキーをおしてください" return *drawMap gmode 0 x = 0 : y = 0 repeat 10 j = cnt repeat 10 i = cnt pos x,y gcopy 1,map(i,j)*32,0,32,32 x += 32 loop x = 0 : y += 32 loop return