ボタンのビット値を書いても、どのボタンか判り難いですよね。
そこで、プチコン3号の新しめのバージョンでは、ボタンのビットを表す定数値が用意されました。
WHILE 1
WAIT
B=BUTTON()
IF B AND #UP THEN ?"↑"
IF B AND #DOWN THEN ?"↓"
IF B AND #LEFT THEN ?"←"
IF B AND #RIGHT THEN ?"→"
WEND
この書き方をした方が、後でプログラムを読むとき、解りやすいです。
以上です。
更に簡略化してみます。
WHILE 1
WAIT
B=BUTTON()
IF B AND 1 THEN ?"↑"
IF B AND 2 THEN ?"↓"
IF B AND 4 THEN ?"←"
IF B AND 8 THEN ?"→"
WEND
2進数は10進数で書くことも当然できるので、10進数で書いたほうが短いです。
これを簡略化してみます。
WHILE 1
WAIT
B=BUTTON()
IF B AND &B0001 THEN ?"↑"
IF B AND &B0010 THEN ?"↓"
IF B AND &B0100 THEN ?"←"
IF B AND &B1000 THEN ?"→"
WEND
IF文などの判定式では、実は「0以外か」という判定をするものなので、( )!=0 という条件式は省略できます。
WHILE 1
WAIT
B=BUTTON()
IF (B AND &B0001)!=0 THEN ?"↑"
IF (B AND &B0010)!=0 THEN ?"↓"
IF (B AND &B0100)!=0 THEN ?"←"
IF (B AND &B1000)!=0 THEN ?"→"
WEND
この例では、(B AND &B0001)などのAND演算した計算結果が 0 でなかった場合、THEN文が実行されます。
つまり、特定ボタンのビットのみを取り出し、そのボタンが押されたかを判定しています。
これで斜め押しや、他のボタンとの同時押しした場合でもTHEN文を実行できるようになりました。