けいさんへ
本来は60fpsで動作しない場合のBUTTON(2)相当の判定方法のテストだったのですが、プログラミングは自由なので仕様通りに作られていれば何ら問題はないです。
最大3フレームの猶予というのが結構曖昧だったので補足で書いているようにVSYNC 3を活かしておけば細かいことは気にせずOKというスタンスでした(笑)
Godotさんへ
VSYNC 3のままだと前回のボタン情報が必須であるためIFとTHENの間にすべてを収めるのは無理ですね。
VSYNC 1だったら
IF (BUTTON() AND 15)==0 AND (BUTTON(2) AND 48)==48 THEN BEEP
とすることができますが。
pinfuさんへ
入門講座のビット演算の回では初心者向けに2進数や16進数の基本からAND、OR、NOT、XORの仕組みについて書く予定です。
BUTTON(2)の代用として(Aに前回のボタン情報、Bに今回のボタン情報が入っている場合)NOT A AND Bで押した瞬間のボタンが取得できますが、それがなぜなのかの解説も書きます。
コア/co.aさんへ
VSYNC 3で動作時に3フレームの猶予があるかというと実際は先に押したボタンのタイミングで変わってくるし、私のプログラムでは3フレームの猶予はないため「3フレームまでOK」と解釈した場合にはそのようになってしまいますよね。
というわけで正解例はこちらです。
WHILE 1
A=B:B=BUTTON()
IF (A AND 48)==0 AND (B AND 63)==48 THEN BEEP
VSYNC 3
WEND
ねっ!簡単でしょ?
この正解例では「十字ボタンを押して無く、かつ、ABボタンを両方押している」という判定を(B AND 15)==0 AND (B AND 48)==48ではなく(B AND 63)==48という1つの式にまとめています。
これは私のプチコン3号入門講座でも書いている複数ボタンの入力判定ですがどのようなボタンの組み合わせであっても1つの式で簡単に判断が可能になります。
プチコン3号のボタン入力判定の中~上級者向けの問題です。
ABボタンを同時に押した瞬間(最大3フレームまでの差は許容する)に十字ボタンを押していなかったらBEEPが鳴るプログラムを作ろうと思います。
条件判断部分を記述してこのプログラムを完成させてください。
WHILE 1
IF 条件判断 THEN BEEP
VSYNC 3
WEND
締め切りは1月22日の23時です。回答をする場合はネタバレチェックを忘れずにお願いします。
締め切り後に正解例を提示して正解者には「そうだね」を押します。
腕に自信のある人の挑戦求む!