mbedアプリケーションボード( http://developer.mbed.org/cookbook/mbed-application-board )を使用した、簡単なシューティングゲーム

Dependencies:   C12832 MMA7660 mbed

Revision:
0:6ab01cb28fd0
Child:
1:f5dbfedf7489
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Apr 15 08:22:43 2015 +0000
@@ -0,0 +1,214 @@
+#include "mbed.h"
+#include "C12832.h"
+#include "MMA7660.h"
+
+C12832 lcd(p5, p7, p6, p8, p11);
+BusIn joy(p15, p16, p12, p16);
+DigitalIn fire(p14);
+DigitalIn up(p15);
+DigitalIn down(p12);
+DigitalIn right(p16);
+DigitalIn left(p13);
+BusOut leds(LED1,LED2,LED3,LED4);
+PwmOut speaker(p26);
+PwmOut r (p23);
+PwmOut g (p24);
+PwmOut b (p25);
+MMA7660 MMA(p28, p27);
+AnalogIn pot1(p19);
+AnalogIn pot2(p20);
+Ticker timeInt;
+
+/*ゲームステータス*/
+int racketP1,shot,enemyX=127,enemyY,enemyX2,life=3,lifeLED=3,lvl=2,score=0;
+unsigned int randoms=0;
+
+void setHz(int Hz){
+    float sycle;
+    sycle = (float)1/Hz;
+    speaker.period(sycle);
+    speaker = 0.3;
+}
+
+void end(){
+    timeInt.detach();
+    r = g = b = 1;
+    lcd.cls();
+    lcd.locate(0, 0);
+    lcd.printf("SCORE:%d", score);
+    wait(2);
+    speaker = 0;
+    while(1);
+}
+
+
+void timeIntFunc(){
+    static unsigned int sownd=0,safeTime=40;
+    
+    lcd.cls();
+    
+    if(shot){
+        if(sownd<9)sownd = 1;
+        lcd.rect(9, (racketP1*8)+3, 127, (racketP1*8)+4, 1);
+    }
+    
+    if(safeTime>0){
+        safeTime--;
+        enemyY = randoms % 4;
+    }
+    else if(enemyY == racketP1 && shot){
+        if(sownd<9)sownd = 5;
+        score++;
+//        lcd.fillcircle(enemyX+3, (enemyY*8)+4, 14, 1);
+        enemyX = 127;
+        enemyY = randoms%4;
+        if(!(score%20)){
+            lvl++;
+        }
+    }else{
+        enemyX -= lvl;
+    }
+    
+    if(enemyX < 1){
+        life--;
+        sownd = 9;
+        enemyX = 127;
+        safeTime = 40;
+    }
+    
+    if(enemyX > 120)enemyX2 = 127;
+    else enemyX2 = enemyX+7;
+    if(!safeTime)lcd.fillrect(enemyX, enemyY*8, enemyX2, (enemyY*8)+7, 1);
+    lcd.rect(0, racketP1*8, 7, (racketP1*8)+7, 1);
+    
+    switch(sownd){
+        case 0:
+        speaker = 0;
+        sownd = 0;
+        break;
+        case 1:
+        setHz(1000);
+        sownd++;
+        break;
+        case 2:
+        setHz(660);
+        sownd++;
+        break;
+        case 3:
+        setHz(440);
+        sownd++;
+        break;
+        case 4:
+        setHz(200);
+        sownd = 0;
+        break;
+        
+        case 5:
+        setHz(150);
+        sownd++;
+        break;
+        case 6:
+        setHz(100);
+        sownd++;
+        break;
+        case 7:
+        setHz(150);
+        sownd++;
+        break;
+        case 8:
+        setHz(100);
+        sownd = 0;
+        break;
+        
+        case 9:
+        setHz(100);
+        sownd++;
+        lifeLED = life;
+        break;
+        case 10:
+        setHz(150);
+        sownd++;
+        lifeLED = life+1;
+        break;
+        case 11:
+        setHz(300);
+        sownd++;
+        lifeLED = life;
+        break;
+        case 12:
+        setHz(150);
+        sownd++;
+        lifeLED = life+1;
+        break;
+        case 13:
+        setHz(300);
+        sownd++;
+        lifeLED = life;
+        break;
+        case 14:
+        setHz(150);
+        sownd++;
+        lifeLED = life+1;
+        break;
+        case 15:
+        setHz(100);
+        sownd = 0;
+        lifeLED = life;
+        if(life == 0){
+            end();
+        }
+        break;
+    }
+    switch(lifeLED){
+        case 0:
+        r = b = g = 1;
+        break;
+        case 1:
+        r = 0;
+        g = 1;
+        break;
+        case 2:
+        r = g = 0;
+        break;
+        case 3:
+        g = 0;
+        r = 1;
+        break;
+    }
+    shot = 0;
+}
+
+int main() {
+    int upE,downE,rightE,leftE,fireE;
+    lcd.cls();
+    speaker = 0;
+    r.period(0.01);
+    g.period(0.01);
+    b.period(0.01);
+    r = g = b = 1;
+    lcd.locate(0, 0);
+    lcd.printf("PLEASE PRESS\n    ANY BUTTON");
+    while(!joy && !fire);
+    timeInt.attach(&timeIntFunc, 0.050);
+    while(1){
+        randoms++;
+        if(!up)upE = 1;
+        if(!down)downE = 1;
+        if(!right)rightE = 1;
+        if(!left)leftE = 1;
+        if(!fire)fireE = 1;
+        if(fire && fireE){
+            randoms = 0;
+            fireE = 0;
+            shot = 1;
+        }else if(up && upE && racketP1!=0){
+            randoms = 0;
+            upE = 0;
+            racketP1--;
+        }else if(down && downE && racketP1!=3){
+            randoms = 0;
+            downE = 0;
+            racketP1++;
+        }
+    }
+}
\ No newline at end of file