プレイ日記
人はこれをスパゲッティコードと呼ぶ… 簡単にできそう感半端ない DATA文とかで…
6そうだね
プレイ済み
返信[1]
親投稿
otta777 otta777a
よ~く見ると変数TYの条件が同じ行がありますよね。 IF TY>=151 && TY<=169 THEN IF TX>=19 && TX<=37 && … IF TX>=49 && TX<=67 && … (以下同様) ENDIF って記述すると少しIF命令の条件が短く出来そうですね。
1そうだね
プレイ済み
返信[2]
親投稿
あーなるほど!ありがとうございます!
0そうだね
プレイ済み
返信[3]
親投稿
かなーりきれいになりました
0そうだね
プレイ済み
返信[4]
親投稿
大体30ずつ加算して判定してるからForToNextで繰り返し出来ないかな
1そうだね
プレイ済み
返信[5]
親投稿
otta777 otta777a
Xの座標も規則性があるんでそれを利用して IF TY<=127 && TY>=145 THEN FOR POS=0 TO 9 IF TX>=POS*30+9 && TX<=POS*30+27 THEN BEEP 9:STRING$=STRING$+MID$("123456789",POS,1)'右端が見えないんで他に処理があるんだったらこの後に続けて記述 NEXT ENDIF とまとめる事もできますね。
1そうだね
プレイ済み
返信[6]
親投稿
みむ*mim hidemimtp
あとでキーピッチを詰めたい!とかなった時のために、ottaさんのように縮めたほうがいいかもですね。 FOR~NEXTも使いつつ、各処理行を HANTEI(TX,TY,19,37,151,169,"A") みたいにして DEF HANTEI (TX,TX1,TX2, TY,TY1,TY2, MOJI$)  ~処理 END とするのが私的にはおすすめ。
1そうだね
プレイ済み
返信[7]
親投稿
MK sou51m
DATAで範囲座標と文字を定義しておいて @KEYTBL DATA "A",19,169,37,151 DATA "B",38,169,56,151 : (N列分 定義) 最初に配列に読み込む RESTORE @KEYTBL FOR I=0 TO N READ MOJI$[I],TX1[I],TY1[I],TX2[I],TY2[I] NEXT タッチ判定部分は FOR I=0 TO N IF TX>=TX1[I] && TX<=TX2[I] && TY>=TY1[I] && TY<=TY2[I] THEN INC STRING$,MOJI[I]:BREAK NEXT というような感じでどうでしょう。 定義した座標や文字はキーボード描画するときにも使えるかもしれません。タッチ判定部分が何ヶ所か出るようなら、関数化したほうが良いですね。
1そうだね
プレイ済み
返信[8]
親投稿
皆さんありがとうございますっ! 公開していませんでしたがv3.0からみむさんの関数でやる案お借りします!(他のも凄かったですが、私の現在の知識では理解が…)
0そうだね
プレイ済み
返信[9]
親投稿
みむ*mim hidemimtp
あ、私が書いたもの、関数(カッコつきで渡して戻り値を得る書き方)で書いちゃってますが、実際は命令(カッコなし、戻り値なし)でやるべきですね。間違えました。
1そうだね
プレイ済み