【SmileBasic】 Pi STARTER GOTO 1 【RPi】 (256レス)
上下前次1-新
抽出解除 レス栞
97(4): 2018/10/15(月)10:13 ID:CRcCt6Vz(1) AAS
こんなふうにやるのだよ
b=button()
if b and 1 then print "up"
if b and 2 then print "down"
if b and 4 then print "left"
if b and 8 then print "right"
if b and 16 then print "a"
if b and 32 then print "b"
要するに#BID_○○は使っちゃダメってこと
そもそも#BID_○○って
#BID_UP…0
#BID_DOWN…1
#BID_LEFT…2
#BID_RIGHT…3
#BID_A…4
#BID_B…5
っていう変な内容なので、button()系では全く役に立たない代物
あんなものをリファレンスの紛らわしい場所に載っけてるのが悪いのさ
104: 2018/10/15(月)19:58 ID:NVbsi7KS(3/5) AAS
>>97
めんどくさくても定数用意されったらそっち使ったほうが安全ってもんよ。
bit直接参照したほうが手っ取り早いのは事実だけどもねー。
138(1): 2018/11/03(土)18:49 ID:ImG4IodL(1/5) AAS
キー入力の人は解決したんだろうか?
普通に考えれば
2^0=1
2^1=2
2^3=4
(略)
だから
b and 2^#BID_UP
b and 2^#BID_DOWN
(略)
※2^の方は()がいるかも
であとは>>97の方法で良さそうだけど
141(1): 2018/11/03(土)22:06 ID:ImG4IodL(3/5) AAS
我ながらわかりにくかったので修正
#BID_UP…0
#BID_DOWN…1
#BID_LEFT…2
#BID_RIGHT…3
#BID_A…4
#BID_B…5
ってのは「bit番号」になっていると思うので
2^n
で数値に変換すると
2^#BID_UP =1
2^#BID_DOWN =2
2^#BID_LEFT =4
2^#BID_RIGHT =8
(以降略)
となるので>>97の方法だと
b=button()
if b and (2^#BID_UP) then print "up"
if b and (2^#BID_DOWN) then print "down"
if b and (2^#BID_LEFT) then print "left"
if b and (2^#BID_RIGHT) then print "right"
(以降略)
でできると思うよ
と言う事ね、()優先順位次第で無くても可
147: 138 2018/11/04(日)08:37 ID:UHcF4njL(1) AAS
あくまでも「>>97の方法で検出できるなら」と言う事ね
b and 1
で条件式として処理されてしまう場合はビットの判断はできないと思うから悪しからず
その場合もbitの大きい方から順に引いていけば可能
if (b - 2^#BID_**)>=0 then print "**":b=b-2^#BID_**
で、この場合#BID_Bから処理すればおk
※**はRIGHTとかAなど
だけど、ビットシフトがあるなら、ビットシフトをを使った方がすっきりすると思うから
>>105の方法で良いと思う
「定数がbitになってるときは2^nでおk」てのを書くだけなのに、過疎っていたから連投
しちゃったけど、間に挟まったの気づかなくてすまんかった
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.016s