(2016/11/23)
上週六(11/19)去「南台灣創客教育博覽會」,認識了徐爸(Mark Hsu),也看到他自製的打地鼠遊戲,覺得很不錯,今天依樣畫葫蘆來製作打地鼠遊戲...
題目一:打地鼠
題目二:數學搶答
題目三:打地鼠(離線版,利用MotoBlockly來寫程式)
#include <Wire.h>
#include <motoLiquidCrystal_I2C.h>
LiquidCrystal_I2C mylcd(0x3F,16,2);
byte ir1;
byte ir2;
byte ir3;
byte ir4;
byte ir5;
byte ir6;
byte ircheck;
byte randled;
byte checkpoint;
int score;
long starttime;
int finaltime;
int gametime;
void music() {
tone(A0,523,500);
}
void setup()
{
mylcd.init();
mylcd.backlight();
pinMode(11, OUTPUT);
pinMode(13, OUTPUT);
pinMode(5, INPUT);
pinMode(7, INPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(12, OUTPUT);
pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(4, INPUT);
pinMode(6, INPUT);
ir1 = 0;
ir2 = 0;
ir3 = 0;
ir4 = 0;
ir5 = 0;
ir6 = 0;
ircheck = 0;
randled = 0;
checkpoint = 0;
score = 0;
starttime = 0;
finaltime = 0;
gametime = 60;
pinMode(A0, OUTPUT);
}
void loop()
{
if (checkpoint == 0) {
mylcd.setCursor(0,0);
mylcd.print("Touch 4 and 6 ");
mylcd.setCursor(0,1);
mylcd.print("Start Game....");
digitalWrite(11,HIGH);
digitalWrite(13,HIGH);
if (digitalRead(5) == 1 && digitalRead(7) == 1) {
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
digitalWrite(13,HIGH);
delay(1000);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(12,LOW);
digitalWrite(13,LOW);
delay(1000);
checkpoint = 1;
randled=random(1,7);
starttime=millis();
score = 0;
mylcd.clear();
}
}
if (checkpoint == 1) {
finaltime = gametime - (millis() - starttime) / 1000;
if (finaltime == 9) {
mylcd.clear();
}
if (randled == 1) {
digitalWrite(8,HIGH);
}
if (randled == 2) {
digitalWrite(9,HIGH);
}
if (randled == 3) {
digitalWrite(10,HIGH);
}
if (randled == 4) {
digitalWrite(11,HIGH);
}
if (randled == 5) {
digitalWrite(12,HIGH);
}
if (randled == 6) {
digitalWrite(13,HIGH);
}
ir1 = digitalRead(2);
ir2 = digitalRead(3);
ir3 = digitalRead(4);
ir4 = digitalRead(5);
ir5 = digitalRead(6);
ir6 = digitalRead(7);
if (ir1 == 1) {
ircheck = 1;
if (randled == 1) {
music();
score = score + 1;
}
}
if (ir2 == 1) {
ircheck = 2;
if (randled == 2) {
music();
score = score + 1;
}
}
if (ir3 == 1) {
ircheck = 3;
if (randled == 3) {
music();
score = score + 1;
}
}
if (ir4 == 1) {
ircheck = 4;
if (randled == 4) {
music();
score = score + 1;
}
}
if (ir5 == 1) {
ircheck = 5;
if (randled == 5) {
music();
score = score + 1;
}
}
if (ir6 == 1) {
ircheck = 6;
if (randled == 6) {
music();
score = score + 1;
}
}
if (ircheck != 0) {
randled=random(1,7);
checkpoint = 1;
ircheck = 0;
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(12,LOW);
digitalWrite(13,LOW);
delay(200);
}
if ((ir1 == 1 && ir3 == 1) && (ir4 == 1 && ir6 == 1)) {
checkpoint = 0;
}
if (finaltime <= 0) {
checkpoint = 2;
}
mylcd.setCursor(0,0);
mylcd.print(String("Final Time: ") + String(finaltime));
mylcd.setCursor(0,1);
mylcd.print(String("Score: ") + String(score));
}
if (checkpoint == 2) {
mylcd.setCursor(0,0);
mylcd.print("GAME OVER !!!");
mylcd.setCursor(0,1);
mylcd.print(String("Score: ") + String(score));
for (int i = 1; i <= 3; i=i+1) {
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
digitalWrite(13,HIGH);
delay(500);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(12,LOW);
digitalWrite(13,LOW);
delay(500);
if (i == 3) {
delay(5000);
checkpoint = 0;
}
}
}
}