自分も使うかなと思ったのでつくりました。制限時間のオプションは・・・(´ω`∪)
がんばってください。
#module "text_menu"
//
// テキストメニューの初期化
//
#deffunc menu_init
// 変数を初期化
dim _len_,1 : _len_ = 32 // 配列数
dim _flag_, _len_
dim _x_, _len_
dim _y_, _len_
sdim _text_, 64, _len_
dim _fsize_, _len_
return
//
// テキストメニューの追加
//
// p1 = ID
// p2 = x座標
// p3 = y座標
// p4 = テキスト
// p5 = 文字の大きさ
//
#deffunc menu_add int p1, int p2, int p3, str p4, int p5
// 配列数を超えてないか確認
if (p1 >= 0)&(p1 < _len_) {
_flag_(p1) = 1
_x_(p1) = p2
_y_(p1) = p3
_text_(p1) = p4
_fsize_(p1) = p5
}
return
//
// テキストメニュー
//
// p1 = 選択したID
// p2 = 制限時間(省略時はずっと待機)
//
#deffunc menu var p1, int p2
// 変数初期化
p1 = -1
// 制限時間の補正
if (p2 <= 0) {
time = -1
} else {
time = p2
}
// 待機
repeat time
// クリック取得
getkey click, 1
// 領域判定
repeat _len_ : i = cnt
// もし使用されてるなら
if (_flag_.i == 1) {
// フォント設定
font msgothic, _fsize_.i, 17
// 現在の位置と大きさを考える
size = strlen(_text_.i)*_fsize_.i
// 描画
redraw 0, _x_.i, _y_.i, size+_x_.i, _fsize_.i+_y_.i
if (mousex > _x_.i)&(mousex < size+_x_.i)&(mousey > _y_.i)&(mousey < _fsize_.i+_y_.i) {
// テキスト内を選択中
color 255, 0, 0 : pos _x_.i, _y_.i : mes _text_.i
// クリック確認
if (click == 1) {
// クリックされてるならidを更新
p1 = i
break
}
} else {
// テキスト外
color 128, 128, 128 : pos _x_.i, _y_.i : mes _text_.i
}
redraw 1, _x_.i, _y_.i, size+_x_.i, _fsize_.i+_y_.i
}
loop
// idの確認
if (p1 != -1) {
break
}
// 待機
await 100
loop
return
#global
//
// ここから
//
*tit
menu_init
menu_add 0, 190, 200, "ストーリー", 20
menu_add 1, 150, 270, "タイムアタック", 50
menu id
cls
title "選ばれたのは "+id