6.メニューウィンドウ

カーソルキーで選択できるメニューウィンドウを作ります。

メニュー画面

ウィンドウの表示には、前回と同じユーザー定義命令windowを使います。

mx,myは現在選択しているコマンドの座標です。スペースキーを押すとその座標に合わせてコマンドが実行されます。
このサンプルではコマンドを選択するとウィンドウの色が変わります。

buffer 1,300,110
color 0,0,255
boxf 0,0,180,70
screen 0,320,320
col = 2 //列の数
row = 3 //行の数

*main
color 0,0,0
boxf 0,0,320,320
gosub *keyEvent
gosub *drawMenu //メニューの描画
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 1,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
#global

//メニューの描画
*drawMenu
	font "MS ゴシック",12
	window 10,15,180,70
	color 255,255,255
	pos 30,25
	mes "RED    BLACK"
	pos 30,45
	mes "BLUE   YELLOW"
	pos 30,65
	mes "GREEN  RANDOM"
	pos 15+80*mx,25+20*my
	mes "⇒"
return

*keyEvent
stick key
if key = 1:mx--
if key = 2:my--
if key = 4:mx++
if key = 8:my++
if mx = -1 :mx = col-1
if mx = col :mx = 0
if my = -1 :my = row-1
if my = row :my = 0
if key = 16{ //スペースキーを押したときの処理
	gsel 1
	if mx=0 & my=0 :color 255,0,0
	if mx=1 & my=0 :color 0,0,0
	if mx=0 & my=1 :color 0,0,255
	if mx=1 & my=1 :color 255,255,0
	if mx=0 & my=2 :color 0,255,0
	if mx=1 & my=2 :color rnd(256),rnd(256),rnd(256)
	boxf 0,0,180,70
	gsel 0
}
return