投稿
ヨッシー okkun2002
した画面にPRINT文でボタンを作った時、押されたかの判定はTX,TYとIF文でやるしか方法は有りませんか?
2そうだね
プレイ済み
返信[1]
親投稿
基本はそうですね〜。 ただその為の方法としてREAD,DATAを使って効率化したり、スプライトなどを使ってやるテクニック(?)的なものもありますね。
1そうだね
プレイ済み
返信[2]
親投稿
つれない回答かとも思ったので、ちょっとした例。 DIM BTX[0],BTY[0],BTW[0] DEF PUTBTN X,Y,T$ LOCATE X,Y:?"["+T$+"]"; PUSH BTX,X:PUSH BTY,Y:PUSH BTW,2+LEN(T$) END DEF CHKBTN X,Y FOR I=0 TO LEN(BTX)-1 IF X>=BTX[i] && X < BTX[i]+BTW[i] && Y==BTY[i] THEN RETURN I RETRN -1 END PUTBTN 10,5,"ボタン1" '配置 IF CHKBTN(12,5) THEN BEEP 0 'チェック利用 みたいなのも一つの手。
0そうだね
プレイ済み
返信[3]
親投稿
Lejenne roberingue2012
下画面をタッチしたときってことみたいなので、 ワタシのコメント削除~。(ワタシの勘違いww) すみませんでした~。
0そうだね
プレイ済み
返信[4]
親投稿
ASA fusuian
PRINT文のタッチなら、TX,TYをそれぞれ8で割ると、TYは==比較だけで判定できます。TXもLOCATE文と同じ値で判定できて楽です。
0そうだね
プレイ済み
返信[5]
親投稿
otta777 otta777a
>でんぺんさん その方法だとNEXTが無いためエラーになってしまいますよ。 戻り値を利用するなら関数にする必要がありますね。 DEF CHKBTN(X,Y) BTN=FALSE IF LEN(BTX)<1 THEN RETURN FALSE FOR I=0 TO LEN(BTX)-1 IF X>=BTX[i] && X < BTX[i]+BTW[i] && Y==BTY[i] THEN BTN=I:BREAK NEXT RETURN BTN END これでどうでしょうか?
0そうだね
プレイ済み
返信[6]
親投稿
ヨッシー okkun2002
ありがとうございます。 とりあえずやってみます。
0そうだね
プレイ済み
返信[7]
親投稿
>otta777 あ、ほんとだ。NEXTが抜けてましたね。RETURNを使ってるのに関数にもし忘れてるし…。 即興で試さずに書いたので、記述ミスが多くてすいません…
0そうだね
プレイ済み