Arduino practice: 小型打地鼠

1. 以arduino實做一個打地鼠小遊戲,Serial序列顯示分數(可用七段顯示器或LCD替換顯示分數方式),每3秒隨機一個LED發亮,玩家需要在三秒內按到該發亮LED對應的按鈕才算得分,成功得一分,失敗則扣一分。

2. 電路圖:

3. 程式碼:

// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led1 = 2;
int led2= 3;
int led3= 4;
int led4= 5;
int led5= 6;
int button1 = 8;
int button2 = 9;
int button3 = 10;
int button4 = 11;
int button5 = 12;
static int score=0;
int keyValue=0;

// the setup routine runs once when you press reset:
void setup() {
  Serial.begin(9600);
  // initialize the digital pin as an output.
  pinMode(led1,OUTPUT);
  pinMode(led2,OUTPUT);
  pinMode(led3,OUTPUT);
  pinMode(led4 ,OUTPUT);
  pinMode(led5 ,OUTPUT);
  pinMode(button1, INPUT);
  pinMode(button2, INPUT);
  pinMode(button3, INPUT);
  pinMode(button4, INPUT);
  pinMode(button5, INPUT);
  initial();
}
void initial(){
 digitalWrite(led1,LOW); 
 digitalWrite(led2,LOW); 
 digitalWrite(led3,LOW); 
 digitalWrite(led4,LOW); 
 digitalWrite(led5,LOW); 
 Serial.println(“—–Welcome to Whack-a-mole Game!—–“);
}


// the loop routine runs over and over again forever:
void loop() {
  
  int a = random(2,7);      //隨機選取五個LED之一發亮
  digitalWrite(a, HIGH);  

  unsigned long time = millis();
  while( millis()-time < 3000){    // 三秒換一次LED發亮
    keyValue= digitalRead(a+6);
    if(keyValue){
    break;
    }
  //Serial.println(keyValue);
  delay(10);
  }
  
  if(keyValue){
      score++;
  }else{
      score–;
  }
  digitalWrite(a, LOW);
  Serial.print(“Score: “);
  Serial.println(score);
}


參考:
1. Autodesk circuit: (提供接線、coding模擬,功能完整,使用上方便,不會有爆炸危險XD)
https://circuits.io/circuits/

作者

RongSon

Graduate Student of CCU COMM Game Development, Network Communication, macOS/Ubuntu/Android, Arduino/Raspberry Pi/Intel Edison, Java/Python/C/C++

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *