Dripです。
シルバー・ソードさん、こんにちは。
アドベンチャーゲームにあるような大量のボタンを利用したデータセーブシステムですが、
Windowsのボタンを利用した場合は見栄えも悪く、OSによって外観も変わってしまいます。
独自描画のボタンを作ることで、より簡単に、インタラクティブなボタンを作成する事が
可能です。
以下に簡単なオリジナルボタンを作成するサンプルを示します。
#module
#define sx 140 //ボタンサイズX
#define sy 20 //ボタンサイズY
#define ky ky@
#deffunc button2 //ボタンを設置する命令を作成
c=length(btx):btx(c)=ginfo_cx:bty(c)=ginfo_cy:pos ,ginfo_cy+sy+8
return
#deffunc frame //ボタンを描画、判定する命令を作成
id=-1
repeat length(btx)-1,1
if mousex>btx(cnt) & mousex<btx(cnt)+sx & mousey>bty(cnt) & mousey<bty(cnt)+sy:{
color 255,190,180 //ホバー状態は赤色にする。
if ky&256:id=cnt //ボタンが押されたらIDを返す
}else{
color 200,210,255 //ボタン通常カラーを設定
}
boxf btx(cnt),bty(cnt),btx(cnt)+sx,bty(cnt)+sy //ボタン描画
color:pos btx(cnt),bty(cnt):mes "セーブファイル "+cnt
loop
return id
#global
pos 10,5
repeat 68 //セットアップ(ボタンを置く)
button2:if ginfo_cy>ginfo_winy:pos ginfo_cx+150,5
loop
repeat //メイン
stick ky,15
redraw 0:frame:redraw 1:if stat>-1:{
//この中にセーブ処理を書く
dialog "ファイル "+stat+" にセーブします。\nファイル名:data"+stat+".dat"
}
await 30
loop
この場合はボタン毎にラベルを用意し、似たような処理を羅列する必要もなく、
プログラムの見た目も非常にスマートです。
様々なやり方があるので、参考にがんばってください。