見出し画像

microbitプログラミング 目指せ高橋名人!?ボタン連打ゲームを作ってみた

microbitは手のひらサイズですがボタンやセンサーが搭載されていて、アイデア次第でいろんなものが作製できます。
今回はゲームを作ってみようと思います。
ゲームといっても大作ではなく、手軽に簡単なゲームを作ります。
その名も、「目指せ高橋名人!?ボタン連打ゲーム!!」です。

仕様

単純に10秒間にどれだけ多く連打できたか競うゲームをmicrobitで作製します。
microbitのボタンを使って、Aボタンでスタートして、開始の合図とともに10秒間の間、Bボタンを押した数をカウントします。
10秒間立った後、Bボタンを押した回数を表示し、スコアとするようにします。

用意するもの

今回用意するものは以下です。

microbit 1個

マイクロUSBケーブル 1個

実装コード

今回はクラスを使ってボタン連打ゲームを作っています。
CountGameクラスのメソッドに各ゲームの機能を作っていく形で拡張等もしやすい形にする設計です。
それでも、コードの行数は50行程度ですので、この夏休み頑張って作るのもいいのではないでしょうかw

動きはAボタンを押すとゲームが開始します。
3カウントからのカウントダウンが始まります。
カウントダウンの後、「Start!!」と文字が流れた後、ボタン連打カウントが始まります。
10秒の間何も起きない時間の間に何回Aボタンを押されるか数える処理が行われます。
10秒後「End」と表示がされます。
ゲーム終了後スコアが表示されます。
取ったスコアがベストスコアか判定されて、ベストスコアであれば「BestScore!」と表示され、ハッピーの顔が表示されます。
ベストスコアでなければ、「Good job」と表示して終了します。

Bボタンを押せば現在のベストスコアが表示されます。

AボタンとBボタンを同時に押せば、ベストスコアがリセットされて悲しみの顔が表示されます。

microbitのボタンのみで完結する形のゲームになっています。

# Add your Python code here. E.g.
from microbit import *

class CountGame:
   def __init__(self):
       self.score = 0
       self.bestscore = 0
   
   def GameStart(self):
       display.scroll('3')
       sleep(250)
       display.scroll('2')
       sleep(250)
       display.scroll('1')
       sleep(250)
       display.scroll('Start!!')
   
   def CountPart(self):
       sleep(10000)
       self.score = button_a.get_presses()
       display.scroll('End')
   
   def Score(self):
       display.scroll(str(self.score))

   def setBestScore(self):
       if self.bestscore < self.score:
           self.bestscore = self.score
           display.scroll(str(self.bestscore))
           display.scroll('BestScore!!')
           display.show(Image.HAPPY)
           sleep(1000)
           display.scroll('')

       else:
           game.Score()
           display.scroll('Good job')
   
   def getBestScore(self):
       display.scroll(self.bestscore)
   
   def ScoreReset(self):
       self.score = 0
       self.bestscore = 0

game = CountGame()

while True:
   if button_a.is_pressed() and button_b.is_pressed():
       game.ScoreReset()
       display.scroll('ScoreReset!')
       display.show(Image.SAD)
       sleep(1000)
       display.scroll('')

   if button_a.is_pressed():
       sleep(500)
       game.GameStart()
       game.CountPart()
       game.setBestScore()
   
   if button_b.is_pressed():
       game.getBestScore()  

完成したものがこちら

完成したものはYouTubeで見ることができます。
Aボタンを押して、ゲームをする動画になっています。
下記リンクからご覧ください。

https://youtu.be/l8Ij83_Fos4

改良できる点

クラスの中に別機能を追加するとpythonでの拡張や継承を使った実装ができます。
アイデアをゲームに反映するといいでしょう。
また違うLCDデバイスなどをつけて表示する場所を変えるなどすることも可能です。

プログラムコードとhexファイルはこちら(有料)

プログラムコードとhexコードは有料になります。
コードをコピペすれば、実装ができるので、サポートがわりに寄付と思ってくださいw

ここから先は

52字 / 2ファイル

¥ 980

よろしければサポートをよろしくお願いします。サポートいただいた資金は活動費に使わせていただきます。