グラフィックLCDを使ってみよう

02 プッシュボタンで終了させる



ゲーム本体のクラスを作り始めます。
始めは、プッシュボタンでゲームを終了させるところから作ります。
BreakOut.h
#ifndef BREAKOUT_H
#define BREAKOUT_H

#include "Glcd.h"

class BreakOut : public Glcd
{
  public:
    BreakOut();
    bool getESC();
  protected:
  private:
    DigitalIn *esc;
};

#endif // BREAKOUT_H
 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 コンストラクタ
10 ボタンの状態を知るメソッド
11 
12 
13 ボタンオブジェクトへのポインタ
14 
15 
16 




BreakOut.cpp
#include "BreakOut.h"

BreakOut::BreakOut()
{
  //ctor
  esc  = new DigitalIn(p8);
}
bool BreakOut::getESC()
{
  return esc->read();
}
 1 
 2 
 3 
 4 
 5 
 6 ESCボタンはp8にする
 7 
 8 
 9 
10 状態を読むだけ
11 


メインプログラム



main.cpp
#include "mbed.h"
#include "BreakOut.h"

int main() {
  BreakOut LCD;
  int ESCkey=1;
  while(true){
    for(int y=0; ESCkey && y<8; y++){
      LCD.print(0, y, "Hello world!");
      ESCkey = LCD.getESC();
      LCD.print(69, 1, (ESCkey==1 ? (char*)"OFF" : (char*)"ON "));
      wait_ms(200);
    }
    LCD.clearAll();
    if(!ESCkey) {
      LCD.print(40, 3, "Game Over");
      while(!LCD.getESC());
      wait_ms(20);
      while(LCD.getESC());
      LCD.clearAll();
      wait_ms(100);
      ESCkey=1;
    }
  }
}
 1 
 2 
 3 
 4 
 5 
 6 ESCキーは押されると0を返す
 7 ひたすら「Hello world!」を表示させる
 8 
 9 
10 プッシュボタンが押されたかチェックする
11 プッシュボタンの状態の表示
12 
13 
14 
15 プッシュボタンが押されたら
16 Game Overを表示する
17 プッシュボタンが離されるのを待つ
18 
19 また押されるのを待つ
20 画面クリア
21 
22 
23 押されていないことにする
24 
25