ソースのダウンロード(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
	await 1
	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 *view		;画像の上ではない


	pos button_x.number,button_y.number
	gcopy 2,BUTTON_W*number,BUTTON_H,BUTTON_W,BUTTON_H	;画像を書き換える

;----------------入力確認-------------------
	click_stat=0
	stick click_stat
	if click_stat==512 : end		;右クリックされた
	if click_stat!256 : goto *kurikaesi	;左クリックされていない

	if number==0 : dialog "赤ボタンが選ばれました"
	if number==1 : dialog "青ボタンが選ばれました"
	if number==2 : dialog "緑ボタンが選ばれました"

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

テレワークならECナビ Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!
無料ホームページ 無料のクレジットカード 海外格安航空券 海外旅行保険が無料! 海外ホテル