micro:bitはSTEM教育のために開発された低価格マイコンボード。5x5 dot matrix LED、ボタンだけではなく、傾きセンサーや温度計、地磁気センサーや照度計など様々なセンサーが搭載されていてちょっとしたゲームを作るのに最適。そこで昔取った杵柄で、色々とプログラミングしたものを公開していこうと思います。シミュレータが提供されており、マイコンボードがなくてもプログラミング学習可能、気軽にできます。
今回は野球ゲーム。といっても前置きがすごい長い設定になっています。
設定および機能
場面は9回裏2アウトランナーなし。
敵投手は緩急交えたピッチングを得意とする直球勝負。ストライクしか投げない。
しかし速球、普通、スローボールを使い分ける。
タイミングよくBボタンを押してヒットを狙おう。
バッターはヒットか空振りかのどちらか。
先に3ストライクになって引き分けゲームセットになるか、ランナーを進めて得点、サヨナラ勝ちするかのどちらか。4升目直前でBボタンを押すとヒット、そうでないと空振りのストライク。見逃してもストライク。
ストライクの場合、"S"の表示の後にストライク数を2回表示。
ヒットの場合、"H"の表示後、塁の模擬表示とランナーのいる塁のみを2回点灯。
満塁の後にヒットを打てば、サヨナラ勝ち。
3ストライクでバッターアウト、ゲームオーバーです。
ソース
プログラムのポイント、既知のバグ、制限事項
原因不明ですがLEDの点灯が継続しないため、スプライトを使って塁に出たランナーを表示しています。
ランナーは2進数のシフトを使い、3bitで表現しています。シフト演算子はないので、掛け算と割り算、余りを使って実装。
(デバッグ用)Aボタンを押すといつでもヒットを出せます。
LEDの点灯が継続したらこんなトリッキーなコードにならないのですが、今後原因が分かったら修正するかもしれません。
【参考文献】
【Amazon】micro:bitではじめるプログラミング ―親子で学べるプログラミングとエレクトロニクス (Make:PROJECTS)
【Amazon】BBC micro:bit (マイクロビット)