投稿
ASA fusuian
ボタンを==で判定する場合と、ANDで判定する場合の違いを、縦シュー風のサンプルで解説してみます。
14そうだね
プレイ済み
返信[1]
親投稿
ASA fusuian
まずは==を使った例。+キーで上下左右に移動、Aボタンでレーザー発射ですが、ナナメに動けないし+キーから手を離さないとレーザーが出ません。
0そうだね
プレイ済み
返信[2]
親投稿
ASA fusuian
ナナメにキーを入れるとBUTTONの値が4とか9とか6とか8になります。 キーとAボタンを一緒に押すと、17とか24とか、それだけで8通りの組み合わせがあります。
0そうだね
プレイ済み
返信[3]
親投稿
ASA fusuian
これを、17のIF文を連ねて書くことはできます。プチコン3号ならそのくらいで処理落ちもしないと思います。でも、17通りの数字の組み合わせを間違えたプログラムを書くかも知れないし、BボタンやXY、LRキーなんかも使おうと思うと、何十個もIF文を書かなきゃいけない。
0そうだね
プレイ済み
返信[4]
親投稿
ASA fusuian
そんなのはイヤだ。メンドくさい。
0そうだね
プレイ済み
返信[5]
親投稿
ASA fusuian
そこで、12~16行めのIF B==…を、全部IF B AND…に直します。 これだけで、ナナメ移動しながらビームが撃てるようになります。これで勝つる!
4そうだね
プレイ済み
返信[6]
親投稿
ASA fusuian
3DSには+キーとABXYLR、ZR、ZL、あとセレクト、スタート、ホームの全部で15コのボタンがあります。この中でプチコンのBUTTON関数で読み取れるのはセレクト、スタート、ホームを除いた12コ。
0そうだね
プレイ済み
返信[7]
親投稿
ASA fusuian
3DSの上ではこうならんでいるキーですが…
0そうだね
プレイ済み
返信[8]
親投稿
ASA fusuian
0そうだね
プレイ済み
返信[9]
親投稿
ASA fusuian
BUTTON関数ではこうなります。
0そうだね
プレイ済み
返信[10]
親投稿
ASA fusuian
0そうだね
プレイ済み
返信[11]
親投稿
ASA fusuian
BUTTON関数の値は、押されてるボタンに対応する下段の値1,2,4,8,…2048,4096を合計したものになります。 右ナナメ上に移動しつつ、Aボタンを押しているときは、BUTTON関数の値は1+8+16=25になります。 そこでさらにRボタンを押せば25+512=537になるわけです。
0そうだね
プレイ済み
返信[12]
親投稿
ASA fusuian
なお、RとZLの間が抜けているのは、mkⅡではスタートボタンも読めたのが、3号では読めなくなったためです。
0そうだね
プレイ済み