次は事務所のドアの開閉処理を作る。
GAME Aは10秒、GAME Bは5秒間隔で開閉を繰り返す。
1/60秒単位でのループは、基本的に変えないので、ゲーム内カウンタを利用して、固定値で、300ごとに開閉を繰り返すようにした。
とりあえずこれで、5秒間隔で開閉はするようになった。GAME AとGAME Bでの違いは、この後作ることにする。
*showdoor ;ドアの開閉 if gamecnt\300 { doorflg=doorflg^1 } pos 648,332 celput 3,doorflg return
doorflg=doorflg^1 は、論理式のXORを実行している。
XORは、排他的論理和というもので、小難しく聞こえるけど、どっちも同じ値なら0に、違っていたら1になる。だから、1とのXORを取ると、0→1→0→1→…と、オンオフを繰り返すような数字の動きになる。
やっかいなのは、ミス時や、ボーナスのミスクリア時にも、開閉は継続するってところだな。
このあたりは、あとで作り込むことにした。