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

Dependencies:   C12832 MMA7660 mbed

Committer:
Arsenic
Date:
Wed Apr 15 09:43:36 2015 +0000
Revision:
1:f5dbfedf7489
Parent:
0:6ab01cb28fd0
??????????????????????????;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Arsenic 0:6ab01cb28fd0 1 #include "mbed.h"
Arsenic 0:6ab01cb28fd0 2 #include "C12832.h"
Arsenic 0:6ab01cb28fd0 3 #include "MMA7660.h"
Arsenic 0:6ab01cb28fd0 4
Arsenic 0:6ab01cb28fd0 5 C12832 lcd(p5, p7, p6, p8, p11);
Arsenic 0:6ab01cb28fd0 6 BusIn joy(p15, p16, p12, p16);
Arsenic 0:6ab01cb28fd0 7 DigitalIn fire(p14);
Arsenic 0:6ab01cb28fd0 8 DigitalIn up(p15);
Arsenic 0:6ab01cb28fd0 9 DigitalIn down(p12);
Arsenic 0:6ab01cb28fd0 10 DigitalIn right(p16);
Arsenic 0:6ab01cb28fd0 11 DigitalIn left(p13);
Arsenic 0:6ab01cb28fd0 12 BusOut leds(LED1,LED2,LED3,LED4);
Arsenic 0:6ab01cb28fd0 13 PwmOut speaker(p26);
Arsenic 0:6ab01cb28fd0 14 PwmOut r (p23);
Arsenic 0:6ab01cb28fd0 15 PwmOut g (p24);
Arsenic 0:6ab01cb28fd0 16 PwmOut b (p25);
Arsenic 0:6ab01cb28fd0 17 MMA7660 MMA(p28, p27);
Arsenic 0:6ab01cb28fd0 18 AnalogIn pot1(p19);
Arsenic 0:6ab01cb28fd0 19 AnalogIn pot2(p20);
Arsenic 0:6ab01cb28fd0 20 Ticker timeInt;
Arsenic 0:6ab01cb28fd0 21
Arsenic 0:6ab01cb28fd0 22 /*ゲームステータス*/
Arsenic 1:f5dbfedf7489 23 int rocket,shot,enemyX=127,enemyY,enemyX2,life=3,lifeLED=3,lvl=2,score=0;
Arsenic 0:6ab01cb28fd0 24 unsigned int randoms=0;
Arsenic 0:6ab01cb28fd0 25
Arsenic 0:6ab01cb28fd0 26 void setHz(int Hz){
Arsenic 0:6ab01cb28fd0 27 float sycle;
Arsenic 0:6ab01cb28fd0 28 sycle = (float)1/Hz;
Arsenic 0:6ab01cb28fd0 29 speaker.period(sycle);
Arsenic 0:6ab01cb28fd0 30 speaker = 0.3;
Arsenic 0:6ab01cb28fd0 31 }
Arsenic 0:6ab01cb28fd0 32
Arsenic 0:6ab01cb28fd0 33 void end(){
Arsenic 0:6ab01cb28fd0 34 timeInt.detach();
Arsenic 0:6ab01cb28fd0 35 r = g = b = 1;
Arsenic 0:6ab01cb28fd0 36 lcd.cls();
Arsenic 0:6ab01cb28fd0 37 lcd.locate(0, 0);
Arsenic 0:6ab01cb28fd0 38 lcd.printf("SCORE:%d", score);
Arsenic 0:6ab01cb28fd0 39 wait(2);
Arsenic 0:6ab01cb28fd0 40 speaker = 0;
Arsenic 0:6ab01cb28fd0 41 while(1);
Arsenic 0:6ab01cb28fd0 42 }
Arsenic 0:6ab01cb28fd0 43
Arsenic 0:6ab01cb28fd0 44
Arsenic 0:6ab01cb28fd0 45 void timeIntFunc(){
Arsenic 0:6ab01cb28fd0 46 static unsigned int sownd=0,safeTime=40;
Arsenic 0:6ab01cb28fd0 47
Arsenic 0:6ab01cb28fd0 48 lcd.cls();
Arsenic 0:6ab01cb28fd0 49
Arsenic 0:6ab01cb28fd0 50 if(shot){
Arsenic 0:6ab01cb28fd0 51 if(sownd<9)sownd = 1;
Arsenic 1:f5dbfedf7489 52 lcd.rect(9, (rocket*8)+3, 127, (rocket*8)+4, 1);
Arsenic 0:6ab01cb28fd0 53 }
Arsenic 0:6ab01cb28fd0 54
Arsenic 0:6ab01cb28fd0 55 if(safeTime>0){
Arsenic 0:6ab01cb28fd0 56 safeTime--;
Arsenic 0:6ab01cb28fd0 57 enemyY = randoms % 4;
Arsenic 0:6ab01cb28fd0 58 }
Arsenic 1:f5dbfedf7489 59 else if(enemyY == rocket && shot){
Arsenic 0:6ab01cb28fd0 60 if(sownd<9)sownd = 5;
Arsenic 0:6ab01cb28fd0 61 score++;
Arsenic 1:f5dbfedf7489 62 // lcd.fillcircle(enemyX+3, (enemyY*8)+4, 14, 1); //爆破エフェクト、ONにすると動作が不安定になる。
Arsenic 0:6ab01cb28fd0 63 enemyX = 127;
Arsenic 0:6ab01cb28fd0 64 enemyY = randoms%4;
Arsenic 0:6ab01cb28fd0 65 if(!(score%20)){
Arsenic 0:6ab01cb28fd0 66 lvl++;
Arsenic 0:6ab01cb28fd0 67 }
Arsenic 0:6ab01cb28fd0 68 }else{
Arsenic 0:6ab01cb28fd0 69 enemyX -= lvl;
Arsenic 0:6ab01cb28fd0 70 }
Arsenic 0:6ab01cb28fd0 71
Arsenic 0:6ab01cb28fd0 72 if(enemyX < 1){
Arsenic 0:6ab01cb28fd0 73 life--;
Arsenic 0:6ab01cb28fd0 74 sownd = 9;
Arsenic 0:6ab01cb28fd0 75 enemyX = 127;
Arsenic 0:6ab01cb28fd0 76 safeTime = 40;
Arsenic 0:6ab01cb28fd0 77 }
Arsenic 0:6ab01cb28fd0 78
Arsenic 0:6ab01cb28fd0 79 if(enemyX > 120)enemyX2 = 127;
Arsenic 0:6ab01cb28fd0 80 else enemyX2 = enemyX+7;
Arsenic 0:6ab01cb28fd0 81 if(!safeTime)lcd.fillrect(enemyX, enemyY*8, enemyX2, (enemyY*8)+7, 1);
Arsenic 1:f5dbfedf7489 82 lcd.rect(0, rocket*8, 7, (rocket*8)+7, 1);
Arsenic 0:6ab01cb28fd0 83
Arsenic 0:6ab01cb28fd0 84 switch(sownd){
Arsenic 0:6ab01cb28fd0 85 case 0:
Arsenic 0:6ab01cb28fd0 86 speaker = 0;
Arsenic 0:6ab01cb28fd0 87 sownd = 0;
Arsenic 0:6ab01cb28fd0 88 break;
Arsenic 0:6ab01cb28fd0 89 case 1:
Arsenic 0:6ab01cb28fd0 90 setHz(1000);
Arsenic 0:6ab01cb28fd0 91 sownd++;
Arsenic 0:6ab01cb28fd0 92 break;
Arsenic 0:6ab01cb28fd0 93 case 2:
Arsenic 0:6ab01cb28fd0 94 setHz(660);
Arsenic 0:6ab01cb28fd0 95 sownd++;
Arsenic 0:6ab01cb28fd0 96 break;
Arsenic 0:6ab01cb28fd0 97 case 3:
Arsenic 0:6ab01cb28fd0 98 setHz(440);
Arsenic 0:6ab01cb28fd0 99 sownd++;
Arsenic 0:6ab01cb28fd0 100 break;
Arsenic 0:6ab01cb28fd0 101 case 4:
Arsenic 0:6ab01cb28fd0 102 setHz(200);
Arsenic 0:6ab01cb28fd0 103 sownd = 0;
Arsenic 0:6ab01cb28fd0 104 break;
Arsenic 0:6ab01cb28fd0 105
Arsenic 0:6ab01cb28fd0 106 case 5:
Arsenic 0:6ab01cb28fd0 107 setHz(150);
Arsenic 0:6ab01cb28fd0 108 sownd++;
Arsenic 0:6ab01cb28fd0 109 break;
Arsenic 0:6ab01cb28fd0 110 case 6:
Arsenic 0:6ab01cb28fd0 111 setHz(100);
Arsenic 0:6ab01cb28fd0 112 sownd++;
Arsenic 0:6ab01cb28fd0 113 break;
Arsenic 0:6ab01cb28fd0 114 case 7:
Arsenic 0:6ab01cb28fd0 115 setHz(150);
Arsenic 0:6ab01cb28fd0 116 sownd++;
Arsenic 0:6ab01cb28fd0 117 break;
Arsenic 0:6ab01cb28fd0 118 case 8:
Arsenic 0:6ab01cb28fd0 119 setHz(100);
Arsenic 0:6ab01cb28fd0 120 sownd = 0;
Arsenic 0:6ab01cb28fd0 121 break;
Arsenic 0:6ab01cb28fd0 122
Arsenic 0:6ab01cb28fd0 123 case 9:
Arsenic 0:6ab01cb28fd0 124 setHz(100);
Arsenic 0:6ab01cb28fd0 125 sownd++;
Arsenic 0:6ab01cb28fd0 126 lifeLED = life;
Arsenic 0:6ab01cb28fd0 127 break;
Arsenic 0:6ab01cb28fd0 128 case 10:
Arsenic 0:6ab01cb28fd0 129 setHz(150);
Arsenic 0:6ab01cb28fd0 130 sownd++;
Arsenic 0:6ab01cb28fd0 131 lifeLED = life+1;
Arsenic 0:6ab01cb28fd0 132 break;
Arsenic 0:6ab01cb28fd0 133 case 11:
Arsenic 0:6ab01cb28fd0 134 setHz(300);
Arsenic 0:6ab01cb28fd0 135 sownd++;
Arsenic 0:6ab01cb28fd0 136 lifeLED = life;
Arsenic 0:6ab01cb28fd0 137 break;
Arsenic 0:6ab01cb28fd0 138 case 12:
Arsenic 0:6ab01cb28fd0 139 setHz(150);
Arsenic 0:6ab01cb28fd0 140 sownd++;
Arsenic 0:6ab01cb28fd0 141 lifeLED = life+1;
Arsenic 0:6ab01cb28fd0 142 break;
Arsenic 0:6ab01cb28fd0 143 case 13:
Arsenic 0:6ab01cb28fd0 144 setHz(300);
Arsenic 0:6ab01cb28fd0 145 sownd++;
Arsenic 0:6ab01cb28fd0 146 lifeLED = life;
Arsenic 0:6ab01cb28fd0 147 break;
Arsenic 0:6ab01cb28fd0 148 case 14:
Arsenic 0:6ab01cb28fd0 149 setHz(150);
Arsenic 0:6ab01cb28fd0 150 sownd++;
Arsenic 0:6ab01cb28fd0 151 lifeLED = life+1;
Arsenic 0:6ab01cb28fd0 152 break;
Arsenic 0:6ab01cb28fd0 153 case 15:
Arsenic 0:6ab01cb28fd0 154 setHz(100);
Arsenic 0:6ab01cb28fd0 155 sownd = 0;
Arsenic 0:6ab01cb28fd0 156 lifeLED = life;
Arsenic 0:6ab01cb28fd0 157 if(life == 0){
Arsenic 0:6ab01cb28fd0 158 end();
Arsenic 0:6ab01cb28fd0 159 }
Arsenic 0:6ab01cb28fd0 160 break;
Arsenic 0:6ab01cb28fd0 161 }
Arsenic 0:6ab01cb28fd0 162 switch(lifeLED){
Arsenic 0:6ab01cb28fd0 163 case 0:
Arsenic 0:6ab01cb28fd0 164 r = b = g = 1;
Arsenic 0:6ab01cb28fd0 165 break;
Arsenic 0:6ab01cb28fd0 166 case 1:
Arsenic 0:6ab01cb28fd0 167 r = 0;
Arsenic 0:6ab01cb28fd0 168 g = 1;
Arsenic 0:6ab01cb28fd0 169 break;
Arsenic 0:6ab01cb28fd0 170 case 2:
Arsenic 0:6ab01cb28fd0 171 r = g = 0;
Arsenic 0:6ab01cb28fd0 172 break;
Arsenic 0:6ab01cb28fd0 173 case 3:
Arsenic 0:6ab01cb28fd0 174 g = 0;
Arsenic 0:6ab01cb28fd0 175 r = 1;
Arsenic 0:6ab01cb28fd0 176 break;
Arsenic 0:6ab01cb28fd0 177 }
Arsenic 0:6ab01cb28fd0 178 shot = 0;
Arsenic 0:6ab01cb28fd0 179 }
Arsenic 0:6ab01cb28fd0 180
Arsenic 0:6ab01cb28fd0 181 int main() {
Arsenic 0:6ab01cb28fd0 182 int upE,downE,rightE,leftE,fireE;
Arsenic 0:6ab01cb28fd0 183 lcd.cls();
Arsenic 0:6ab01cb28fd0 184 speaker = 0;
Arsenic 0:6ab01cb28fd0 185 r.period(0.01);
Arsenic 0:6ab01cb28fd0 186 g.period(0.01);
Arsenic 0:6ab01cb28fd0 187 b.period(0.01);
Arsenic 0:6ab01cb28fd0 188 r = g = b = 1;
Arsenic 0:6ab01cb28fd0 189 lcd.locate(0, 0);
Arsenic 0:6ab01cb28fd0 190 lcd.printf("PLEASE PRESS\n ANY BUTTON");
Arsenic 0:6ab01cb28fd0 191 while(!joy && !fire);
Arsenic 0:6ab01cb28fd0 192 timeInt.attach(&timeIntFunc, 0.050);
Arsenic 0:6ab01cb28fd0 193 while(1){
Arsenic 0:6ab01cb28fd0 194 randoms++;
Arsenic 0:6ab01cb28fd0 195 if(!up)upE = 1;
Arsenic 0:6ab01cb28fd0 196 if(!down)downE = 1;
Arsenic 0:6ab01cb28fd0 197 if(!right)rightE = 1;
Arsenic 0:6ab01cb28fd0 198 if(!left)leftE = 1;
Arsenic 0:6ab01cb28fd0 199 if(!fire)fireE = 1;
Arsenic 0:6ab01cb28fd0 200 if(fire && fireE){
Arsenic 0:6ab01cb28fd0 201 randoms = 0;
Arsenic 0:6ab01cb28fd0 202 fireE = 0;
Arsenic 0:6ab01cb28fd0 203 shot = 1;
Arsenic 1:f5dbfedf7489 204 }else if(up && upE && rocket!=0){
Arsenic 0:6ab01cb28fd0 205 randoms = 0;
Arsenic 0:6ab01cb28fd0 206 upE = 0;
Arsenic 1:f5dbfedf7489 207 rocket--;
Arsenic 1:f5dbfedf7489 208 }else if(down && downE && rocket!=3){
Arsenic 0:6ab01cb28fd0 209 randoms = 0;
Arsenic 0:6ab01cb28fd0 210 downE = 0;
Arsenic 1:f5dbfedf7489 211 rocket++;
Arsenic 0:6ab01cb28fd0 212 }
Arsenic 0:6ab01cb28fd0 213 }
Arsenic 0:6ab01cb28fd0 214 }