トピック
shoum shoum0403

変数について

単純なプログラムですが、どうしたらいいですか?このままだと、A=1にはなるのですが、またボタンを押すとA=0と戻りません。 また5行目の、A=1の後に、WAIT命令を入れると、青色(A=0)にはなるのですがすぐまた、緑色(A=1)になり、困っています 簡単に言えば、BACKCOLOR BLUEを表示させたいです。
1そうだね
プレイ済み
返信[1]
親投稿
打ち消されるのはわかってるみたいだし そこはELSEの出番かな
1そうだね
プレイ済み
返信[2]
親投稿
shoum shoum0403
なるほど、ELSEか... ちょっと使って見ます。
0そうだね
プレイ済み
返信[3]
親投稿
shoum shoum0403
んーどう使えばいいんだ?
0そうだね
プレイ済み
返信[4]
親投稿
shoum shoum0403
あ、ELSEIFを使えばできました。 ELSEだけでもできるんですかね?
1そうだね
プレイ済み
返信[5]
親投稿
ELSEIF使うなら、BACKCOLORはIFの分岐の中に入れてしまえば2回IFを使う必要はなくなると思いますよ〜。
1そうだね
プレイ済み
返信[6]
親投稿
TERA(LL) tera0413
やりたい事は、Aボタンを押す度、背景の色を、青とライムで切り換えたい と解釈。 問題は、1回のループ中で判定に使いたい変数Aが先のIF文で変更されて、その次のIF文の条件を満たしてしまうのでまた変更されてしまう事 →1回のループでAボタンを押す度、変数Aを0と1と切り換える。 変数Aに応じた背景の色に変える。 0と1を繰り返す方法、MOD(割った余り)を使う。 ま、他にも方法はいくらでも有りますが、ひとつの解決方法として。 (ループにWHILEを使わない派←どーでもいい)
1そうだね
プレイ済み
返信[7]
親投稿
綺麗に書くならネストでも IF B==16 THEN  IF A THEN   BACKCOLOR #BLUE  ELSE   BACKCOLOR #LIME  ENDIF ENDIF ちなみに「前提条件」って大事よ。 この場合、Aが0か1しかとらない前提になってる。 2とか3とか出てくると変わってくるからね。
2そうだね
プレイ済み
返信[8]
親投稿
あ、ごめんAの反転忘れてたね IF B==16 THEN  IF A THEN   BACKCOLOR #BLUE  ELSE   BACKCOLOR #LIME  ENDIF  A=!A ENDIF
1そうだね
プレイ済み
返信[9]
親投稿
おちゃめ ochame_nako
こういう方法もあります。 A=#LIME WHILE 1  IF BUTTON(2)==16 THEN BACKCOLOR A:A=#LIME+#BLUE-A  VSYNC WEND 2つの値をトグル切り替えを行う場合には「A=2つの値の合計-A」とすれば1回ごとに2つの値を交互に繰り返します。 2つの値ではなく複数の値ならばテーブル処理を行うのがベターですが、分からなければON A GOSUB ~ @条件0,@条件1,@条件2,(以下略)みたいに記述していきジャンプ先の行にBACKCOLOR 指定の色:RETURN と記述すれば良いと思います。
1そうだね
プレイ済み
返信[10]
親投稿
say sayer.exe
配列にぶっこむと言うやり方もある
4そうだね
プレイ済み
返信[11]
親投稿
BlackSoft BlackSoft.mkII3g
おちゃめさんと似ていますが。 「スイッチ」として考える時は、値が0か1になるようにすると、論理演算も利用できて良いですよ。 ACLS:A=0 WHILE 1 IF BUTTON(2) AND 16 THEN BACKCOLOR A*#LIME+!A*#BLUE:A=!A VSYNC WEND
1そうだね
プレイ済み
返信[12]
親投稿
みむ*mim hidemimtp
私も色を配列に入れちゃうのをおすすめ。 あとで色を変えたり色数を増やしたりするのに、色を変更するソース部分を触らずにループ前の配列設定部分だけを変えればいけるので楽です。 DIM BC[2] BC[0]=#BLUE BC[1]=#LIME A=0 WHILE 1  B=BUTTOM(2)  IF B==#A THEN   BACKCOLOR BC[A]   IF A<LEN(BC)-1 THEN INC A ELSE A=0  ENDIF  VSYNC WEND
2そうだね
プレイ済み