投稿
Sきち 4405chan
なぜかループから抜け出せません。なんでですか?
1そうだね
プレイ済み
返信[1]
親投稿
その条件だと A(16)ボタンが押されただけ、かつ上(1)ボタンが押されただけの時って事になってます。 この条件が満たされる事はないです。なぜならAボタンが押されただけ(このだけというのがポイント)と上ボタンが押されただけが両方発生するというのは存在しない状態だからです。 ちょっとややっこしいですけどね。この場合、意図通りにするには、 IF BT AND 16 && BT AND 1 THEN BREAK みたいにしないと駄目です。上記の場合は、Aボタンが押された、かつ上ボタンが押された という条件になります。
0そうだね
プレイ済み
返信[2]
親投稿
ちなみにもう一つの書き方としては、 IF BT==(16+1) THEN BREAK って書き方もあります。この場合、Aボタン+上が押された時だけという事になります。(ちなみにA+上+Bのように他のボタンを混ぜたら判定されません) もし他のボタンを混ぜてもA+上も押されている時は判定させたい場合は、 IF BT AND (16+1)==16+1 THEN BREAK となります。
0そうだね
プレイ済み
返信[3]
親投稿
シュナ S_S_Schneider
多分上キーと Aボタンの 同時押し判定を 行いたいと思いますが…… BUTTON()から得られる値は 押されているボタンの合算値ですので 16 + 1 で 17 の 値になります。 なので BT == 17 が正しい条件です。
0そうだね
プレイ済み
返信[4]
親投稿
シュナ S_S_Schneider
各ボタンごとの 得られる値が ↑:1 ↓:2 ←:4 →:8 …と倍々になっているのも 同時押しを考慮した値だからと思えば この仕組みは難しくはないです。
0そうだね
プレイ済み
返信[5]
親投稿
Sきち 4405chan
皆さん詳しいですね。ありがとうございます。
0そうだね
プレイ済み
返信[6]
親投稿
グレイ pokers
==は等号です。 変数に同時に2つの物は入りません。
0そうだね
プレイ済み
返信[7]
親投稿
たしかに単純に普通の変数には1つの値しか入らないのに16であって1である、なんて条件が満たされるわけないですね。 あとこれはビット演算絡みなので2進数を理解していればわかりやすいのですが、2進数を使わずに説明するとややっこしい感じになってしまいます。とはいえ2進数の説明も始めはややっこしいので、まあ始めはある程度形で理解してしまう方が楽かもです。
1そうだね
プレイ済み
返信[8]
親投稿
まげ MAGE_LOVEMARINE
例えばBUTTON()で返る値が、↑=1、↓=2、←=3、→=4だとすると、←を押せば3ですが、↑↓を同時に押しても3になっちゃいます(物理的に押せませんけど(^^;))。シュナさんがご説明なさった実際の値だと、そういう混同が起きません。1、2、4、8の「(各数を1回しか使わなければ)どの数をどう足しても同じ結果にならない」というのがポイントです。
0そうだね
プレイ済み
返信[9]
親投稿
Sきち 4405chan
すごい考え込まれてますね。最大同時に8つのボタンを押せますね。使うことあるのかな。WIIパーティーUにそんなのがありましたね。
0そうだね
プレイ済み
返信[10]
親投稿
かっちん kacchin7
十字ボタンの全押しは物理上無理ですけどね。 「上+右」「左+上」とかならできます。
0そうだね
プレイ済み
返信[11]
親投稿
Sきち 4405chan
反対側が浮き上がりますからね。NEW3DSならアナログスティックと十字で同時に押せるのかな。
0そうだね
プレイ済み
返信[12]
親投稿
アナログスティックはまたボタンとは違う命令での取得になるから同時は可能でもボタンにはなりませんね〜。
1そうだね
プレイ済み