ソースのダウンロード(4K)推奨

;右クリックで終了
#define BUTTON_MAX 3	;ボタンの数
#define BUTTON_W 90	;ボタンの幅
#define BUTTON_H 40	;ボタンの高さ
*main
;----------------変数の初期化-------------------
	dim button_x,BUTTON_MAX
	dim button_y,BUTTON_MAX
	button_x=100,200,300	;ボタンの左上のX座標
	button_y=50,100,150	;ボタンの左上のY座標

;----------------画面の準備-------------------
	buffer 2
	picload "button.bmp"	;バッファーにボタンの絵を読み込む
	gsel 0
*view
	repeat BUTTON_MAX
		pos button_x.cnt,button_y.cnt
		gcopy 2,BUTTON_W*cnt,0,BUTTON_W,BUTTON_H	;ボタンを表示
	loop
;----------------入力待ち-------------------
*kurikaesi
	click_stat=0
	await 1
	stick click_stat
	if click_stat==512 : end		;右ボタンが押された
	if click_stat!256 : goto *kurikaesi	;左ボタンが押されていない

;----------------どこでクリックされたか判定-------------------
	number=-1		;何番目のボタンか
	repeat BUTTON_MAX
		if mousex < button_x.cnt : continue
		if mousex > (button_x.cnt+BUTTON_W) : continue
		if mousey < button_y.cnt : continue
		if mousey > (button_y.cnt+BUTTON_H) : continue
		number=cnt	;押されたボタンをnumberに
		break
	loop
	if number==-1 : goto *kurikaesi		;ボタンの上ではない

	pos button_x.number,button_y.number
	gcopy 2,BUTTON_W*number,BUTTON_H,BUTTON_W,BUTTON_H	;押された画像に書き換える
	if number==0 : dialog "赤ボタンが押されました"
	if number==1 : dialog "青ボタンが押されました"
	if number==2 : dialog "緑ボタンが押されました"

	goto *view
一つの画像ボタンを作ってみるを一読しているとして 話を進めていきますので、読んでいない方は、一度読むことをおすすめします。
まず、表示する位置を配列変数に入れます。こうすることで、同じ判定などを repeatを用いて容易に行えるようになります。
初期表示もrepeatを用いて表示します。このときボタンの画像を規則正しく並べて 用意する必要があります。そうしないと、repeatが使用できません。
入力待ちは一つの場合と何ら変わりありません。
ここで、どのボタンが押されたか?という情報を入れる変数が必要になります。 ここではnumberにしました。ボタンが押されていなければ-1が入るようにしておきます。 後は、ボタンを表示した順に0から番号を付けた様に考え、判定を行います。 ボタンの外にマウスがあればすぐに次のボタンを調べます。 ボタンの中にマウスがあったときにそのボタンの番号をnumberに入れます。 ちなみに、repeatの中のbreakはボタンが少なければ必要ないと思います。 処理速度向上のためです。
後は、numberにどのボタンが押されたのかの情報が入っているので、それを用いて 処理を行うだけです。
■ 目次へ戻る ■

PC用眼鏡【管理人も使ってますがマジで疲れません】 解約手数料0円【あしたでんき】 Yahoo 楽天 NTT-X Store

無料ホームページ 無料のクレジットカード 海外格安航空券 ふるさと納税 海外旅行保険が無料! 海外ホテル