トピック
りょう ryo1139

BUTTON(2)==#A

BUTTON(2)==#B    ・・・    ・・・ と書いていって、Xボタン以外を押したら~~の命令と、いちいちBUTTON(2)==#~ というように同じ命令を何個も書いているのですが、いっきにXボタン以外のボタンを押したら~~の命令にする。というのはできますか? 簡単に言うと、BUTTON命令をまとめてA,B,Y,上,下,左,右,R,L,ZR,ZLの命令にすることはできますか? どなたか教えてください。
1そうだね
プレイ済み
返信[1]
親投稿
e Sonoda.Yuuki.MH
ORを使えば? BUTTON(2)==#A OR #B OR #Y OR #L OR #R OR #UP OR #DOWN OR #LEFT OR #RITE みたいな? もっと簡単なのあるかもしれないけど
0そうだね
プレイ済み
返信[2]
親投稿
りょう ryo1139
おお!返信ありがとうございます!! おかげで、楽にプログラミングできそうです!ありがとうございました!
0そうだね
プレイ済み
返信[3]
親投稿
bread kaltouami1211
こっちの方が楽 IF B!=#X THEN~
0そうだね
プレイ済み
返信[4]
親投稿
ΖΕΧ ZEX256
ゴキちゃまZの書き方だと、ボタン押して無くてもTHENを実行しちゃうよ。 はい、やり直し
2そうだね
プレイ済み
返信[5]
親投稿
InDoor TheInDoor12
BUTTON(2) AND NOT X# がおすすめ
1そうだね
プレイ済み
返信[6]
親投稿
すっきり書く方法が思いつかない… IF B*(B-64)THENとか? ボタン押してかつXボタンと等しくないとき
0そうだね
プレイ済み
返信[7]
親投稿
おちゃめ ochame_nako
InDoorさんの方法が一番オススメですが、単に短くしたいのであればIF-65AND BUTTON(2)THEN ~とすれば良いでしょう。 プチコン3号の整数型は32bitですが、便宜上16bitで表記してみます。 負数は補数で表記されるためー65を2進数で表記すると1111111110111111になります。 1111111110111111 =-65 0000000001000000 = 64(Xボタン) これを見るとXボタンを押したとき BUTTON()とー65のANDは0になり、それ以外のボタンでは0以外の数になるためXボタン以外のボタンを押したかどうかが判定可能になるのが分かると思います。
0そうだね
プレイ済み
返信[8]
親投稿
おちゃめ ochame_nako
負数を含めた10進数を2進数に変換する方法ですが、私のBIN$関数もしくは簡易関数電卓のBIN()関数を使用すれば簡単に求めることが出来ます。
0そうだね
プレイ済み
返信[9]
親投稿
ΖΕΧ ZEX256
InDoorさんの書き方だとボタンに対応していない11bitまで判定しちゃうのでTHENに入ることが無いのでダメ 因みに十字ボタンなので全ては押せないため3DSを分解しないとテストできない。
0そうだね
プレイ済み
返信[10]
親投稿
ΖΕΧ ZEX256
予め変数に判定したいボタンのビット状態を作っておき、判定はボタンと==で判定すればいいよ 十字ボタン全押しはできないけど
0そうだね
プレイ済み
返信[11]
親投稿
InDoor TheInDoor12
>ZEXさん ANDはビット演算なので、一つでも対応しているbitが存在すれば0以外の値が返ってきます。 したがって、「THENに入ることが無い」というのは間違いだと思います。 ついでに訂正 X#→#X
1そうだね
プレイ済み
返信[12]
親投稿
マギー M191246
念のため、仕様を確認しておきたいのですけど 1.Xボタンが押されているかどうかに かかわらず他のボタンが押されたら反応する。 2.Xボタンが押されていたら 他のボタンを押しても反応しない。 3.Xボタン以外のボタンが それぞれ単独で押された場合だけ反応する。 どれにあたりますでしょうか?
0そうだね
プレイ済み
返信[13]
親投稿
りょう ryo1139
3が一番あてはまります みんなすごいな~・・・
0そうだね
プレイ済み
返信[14]
親投稿
3面倒だな ボタン1個だけってどうやるとすっきりいけるかなLOGでもするか
0そうだね
プレイ済み
返信[15]
親投稿
LOG(B,2)が整数かどうか調べれはボタンを複数押していないの判定ができるっぽい?
0そうだね
プレイ済み
返信[16]
親投稿
りょう ryo1139
だんだん難しくなってくな・・・ ありがとう!やってみます!!
0そうだね
プレイ済み
返信[17]
親投稿
れい rei-nntnd
複数のビットが立っているかどうかを調べるのは簡単な方法がある。 ((X-1) AND X) これが0なら立ってるビットは1個だけ。 0以外なら複数のビットが立ってる。 プチコンではしらんが、普通のプログラミング言語ならlogを使うより速い。
1そうだね
プレイ済み
返信[18]
親投稿
りょう ryo1139
皆さんありがとうございました! おかげでプログラムの文字数を少しでも少なくすることができました!
0そうだね
プレイ済み