Dependencies:   C12832 MMA7660 mbed

Fork of shot_game by Takuma Miyazaki

Committer:
green_hatano
Date:
Thu Apr 16 06:19:56 2015 +0000
Revision:
1:880253791d78
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 0:6ab01cb28fd0 23 int racketP1,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);
green_hatano 1:880253791d78 38 lcd.printf("SCORE:%d ", score);
green_hatano 1:880253791d78 39 fp = fopen("local/test.txt","r");
green_hatano 1:880253791d78 40 fscanf(fp,"%d",i);
green_hatano 1:880253791d78 41 fclose(fp);
green_hatano 1:880253791d78 42 if(score > i){
green_hatano 1:880253791d78 43 fp = fopen("local/test.txt","w");
green_hatano 1:880253791d78 44 fprintf(fp,"%d",score);
green_hatano 1:880253791d78 45 fclose(fp);
green_hatano 1:880253791d78 46 lcd.printf("NEW RECORD!!\n");
green_hatano 1:880253791d78 47 lcd.printf("HIGH SCORE:%d",score);
green_hatano 1:880253791d78 48 }
green_hatano 1:880253791d78 49 else{
green_hatano 1:880253791d78 50 lcd.printf("HIGH SCORE:%d",i);
green_hatano 1:880253791d78 51 }
Arsenic 0:6ab01cb28fd0 52 wait(2);
Arsenic 0:6ab01cb28fd0 53 speaker = 0;
Arsenic 0:6ab01cb28fd0 54 while(1);
Arsenic 0:6ab01cb28fd0 55 }
Arsenic 0:6ab01cb28fd0 56
Arsenic 0:6ab01cb28fd0 57
Arsenic 0:6ab01cb28fd0 58 void timeIntFunc(){
Arsenic 0:6ab01cb28fd0 59 static unsigned int sownd=0,safeTime=40;
Arsenic 0:6ab01cb28fd0 60
Arsenic 0:6ab01cb28fd0 61 lcd.cls();
Arsenic 0:6ab01cb28fd0 62
Arsenic 0:6ab01cb28fd0 63 if(shot){
Arsenic 0:6ab01cb28fd0 64 if(sownd<9)sownd = 1;
Arsenic 0:6ab01cb28fd0 65 lcd.rect(9, (racketP1*8)+3, 127, (racketP1*8)+4, 1);
Arsenic 0:6ab01cb28fd0 66 }
Arsenic 0:6ab01cb28fd0 67
Arsenic 0:6ab01cb28fd0 68 if(safeTime>0){
Arsenic 0:6ab01cb28fd0 69 safeTime--;
Arsenic 0:6ab01cb28fd0 70 enemyY = randoms % 4;
Arsenic 0:6ab01cb28fd0 71 }
Arsenic 0:6ab01cb28fd0 72 else if(enemyY == racketP1 && shot){
Arsenic 0:6ab01cb28fd0 73 if(sownd<9)sownd = 5;
Arsenic 0:6ab01cb28fd0 74 score++;
Arsenic 0:6ab01cb28fd0 75 // lcd.fillcircle(enemyX+3, (enemyY*8)+4, 14, 1);
Arsenic 0:6ab01cb28fd0 76 enemyX = 127;
Arsenic 0:6ab01cb28fd0 77 enemyY = randoms%4;
Arsenic 0:6ab01cb28fd0 78 if(!(score%20)){
Arsenic 0:6ab01cb28fd0 79 lvl++;
Arsenic 0:6ab01cb28fd0 80 }
Arsenic 0:6ab01cb28fd0 81 }else{
Arsenic 0:6ab01cb28fd0 82 enemyX -= lvl;
Arsenic 0:6ab01cb28fd0 83 }
Arsenic 0:6ab01cb28fd0 84
Arsenic 0:6ab01cb28fd0 85 if(enemyX < 1){
Arsenic 0:6ab01cb28fd0 86 life--;
Arsenic 0:6ab01cb28fd0 87 sownd = 9;
Arsenic 0:6ab01cb28fd0 88 enemyX = 127;
Arsenic 0:6ab01cb28fd0 89 safeTime = 40;
Arsenic 0:6ab01cb28fd0 90 }
Arsenic 0:6ab01cb28fd0 91
Arsenic 0:6ab01cb28fd0 92 if(enemyX > 120)enemyX2 = 127;
Arsenic 0:6ab01cb28fd0 93 else enemyX2 = enemyX+7;
Arsenic 0:6ab01cb28fd0 94 if(!safeTime)lcd.fillrect(enemyX, enemyY*8, enemyX2, (enemyY*8)+7, 1);
Arsenic 0:6ab01cb28fd0 95 lcd.rect(0, racketP1*8, 7, (racketP1*8)+7, 1);
Arsenic 0:6ab01cb28fd0 96
Arsenic 0:6ab01cb28fd0 97 switch(sownd){
Arsenic 0:6ab01cb28fd0 98 case 0:
Arsenic 0:6ab01cb28fd0 99 speaker = 0;
Arsenic 0:6ab01cb28fd0 100 sownd = 0;
Arsenic 0:6ab01cb28fd0 101 break;
Arsenic 0:6ab01cb28fd0 102 case 1:
Arsenic 0:6ab01cb28fd0 103 setHz(1000);
Arsenic 0:6ab01cb28fd0 104 sownd++;
Arsenic 0:6ab01cb28fd0 105 break;
Arsenic 0:6ab01cb28fd0 106 case 2:
Arsenic 0:6ab01cb28fd0 107 setHz(660);
Arsenic 0:6ab01cb28fd0 108 sownd++;
Arsenic 0:6ab01cb28fd0 109 break;
Arsenic 0:6ab01cb28fd0 110 case 3:
Arsenic 0:6ab01cb28fd0 111 setHz(440);
Arsenic 0:6ab01cb28fd0 112 sownd++;
Arsenic 0:6ab01cb28fd0 113 break;
Arsenic 0:6ab01cb28fd0 114 case 4:
Arsenic 0:6ab01cb28fd0 115 setHz(200);
Arsenic 0:6ab01cb28fd0 116 sownd = 0;
Arsenic 0:6ab01cb28fd0 117 break;
Arsenic 0:6ab01cb28fd0 118
Arsenic 0:6ab01cb28fd0 119 case 5:
Arsenic 0:6ab01cb28fd0 120 setHz(150);
Arsenic 0:6ab01cb28fd0 121 sownd++;
Arsenic 0:6ab01cb28fd0 122 break;
Arsenic 0:6ab01cb28fd0 123 case 6:
Arsenic 0:6ab01cb28fd0 124 setHz(100);
Arsenic 0:6ab01cb28fd0 125 sownd++;
Arsenic 0:6ab01cb28fd0 126 break;
Arsenic 0:6ab01cb28fd0 127 case 7:
Arsenic 0:6ab01cb28fd0 128 setHz(150);
Arsenic 0:6ab01cb28fd0 129 sownd++;
Arsenic 0:6ab01cb28fd0 130 break;
Arsenic 0:6ab01cb28fd0 131 case 8:
Arsenic 0:6ab01cb28fd0 132 setHz(100);
Arsenic 0:6ab01cb28fd0 133 sownd = 0;
Arsenic 0:6ab01cb28fd0 134 break;
Arsenic 0:6ab01cb28fd0 135
Arsenic 0:6ab01cb28fd0 136 case 9:
Arsenic 0:6ab01cb28fd0 137 setHz(100);
Arsenic 0:6ab01cb28fd0 138 sownd++;
Arsenic 0:6ab01cb28fd0 139 lifeLED = life;
Arsenic 0:6ab01cb28fd0 140 break;
Arsenic 0:6ab01cb28fd0 141 case 10:
Arsenic 0:6ab01cb28fd0 142 setHz(150);
Arsenic 0:6ab01cb28fd0 143 sownd++;
Arsenic 0:6ab01cb28fd0 144 lifeLED = life+1;
Arsenic 0:6ab01cb28fd0 145 break;
Arsenic 0:6ab01cb28fd0 146 case 11:
Arsenic 0:6ab01cb28fd0 147 setHz(300);
Arsenic 0:6ab01cb28fd0 148 sownd++;
Arsenic 0:6ab01cb28fd0 149 lifeLED = life;
Arsenic 0:6ab01cb28fd0 150 break;
Arsenic 0:6ab01cb28fd0 151 case 12:
Arsenic 0:6ab01cb28fd0 152 setHz(150);
Arsenic 0:6ab01cb28fd0 153 sownd++;
Arsenic 0:6ab01cb28fd0 154 lifeLED = life+1;
Arsenic 0:6ab01cb28fd0 155 break;
Arsenic 0:6ab01cb28fd0 156 case 13:
Arsenic 0:6ab01cb28fd0 157 setHz(300);
Arsenic 0:6ab01cb28fd0 158 sownd++;
Arsenic 0:6ab01cb28fd0 159 lifeLED = life;
Arsenic 0:6ab01cb28fd0 160 break;
Arsenic 0:6ab01cb28fd0 161 case 14:
Arsenic 0:6ab01cb28fd0 162 setHz(150);
Arsenic 0:6ab01cb28fd0 163 sownd++;
Arsenic 0:6ab01cb28fd0 164 lifeLED = life+1;
Arsenic 0:6ab01cb28fd0 165 break;
Arsenic 0:6ab01cb28fd0 166 case 15:
Arsenic 0:6ab01cb28fd0 167 setHz(100);
Arsenic 0:6ab01cb28fd0 168 sownd = 0;
Arsenic 0:6ab01cb28fd0 169 lifeLED = life;
Arsenic 0:6ab01cb28fd0 170 if(life == 0){
Arsenic 0:6ab01cb28fd0 171 end();
Arsenic 0:6ab01cb28fd0 172 }
Arsenic 0:6ab01cb28fd0 173 break;
Arsenic 0:6ab01cb28fd0 174 }
Arsenic 0:6ab01cb28fd0 175 switch(lifeLED){
Arsenic 0:6ab01cb28fd0 176 case 0:
Arsenic 0:6ab01cb28fd0 177 r = b = g = 1;
Arsenic 0:6ab01cb28fd0 178 break;
Arsenic 0:6ab01cb28fd0 179 case 1:
Arsenic 0:6ab01cb28fd0 180 r = 0;
Arsenic 0:6ab01cb28fd0 181 g = 1;
Arsenic 0:6ab01cb28fd0 182 break;
Arsenic 0:6ab01cb28fd0 183 case 2:
Arsenic 0:6ab01cb28fd0 184 r = g = 0;
Arsenic 0:6ab01cb28fd0 185 break;
Arsenic 0:6ab01cb28fd0 186 case 3:
Arsenic 0:6ab01cb28fd0 187 g = 0;
Arsenic 0:6ab01cb28fd0 188 r = 1;
Arsenic 0:6ab01cb28fd0 189 break;
Arsenic 0:6ab01cb28fd0 190 }
Arsenic 0:6ab01cb28fd0 191 shot = 0;
Arsenic 0:6ab01cb28fd0 192 }
Arsenic 0:6ab01cb28fd0 193
Arsenic 0:6ab01cb28fd0 194 int main() {
Arsenic 0:6ab01cb28fd0 195 int upE,downE,rightE,leftE,fireE;
Arsenic 0:6ab01cb28fd0 196 lcd.cls();
Arsenic 0:6ab01cb28fd0 197 speaker = 0;
Arsenic 0:6ab01cb28fd0 198 r.period(0.01);
Arsenic 0:6ab01cb28fd0 199 g.period(0.01);
Arsenic 0:6ab01cb28fd0 200 b.period(0.01);
Arsenic 0:6ab01cb28fd0 201 r = g = b = 1;
Arsenic 0:6ab01cb28fd0 202 lcd.locate(0, 0);
Arsenic 0:6ab01cb28fd0 203 lcd.printf("PLEASE PRESS\n ANY BUTTON");
Arsenic 0:6ab01cb28fd0 204 while(!joy && !fire);
Arsenic 0:6ab01cb28fd0 205 timeInt.attach(&timeIntFunc, 0.050);
Arsenic 0:6ab01cb28fd0 206 while(1){
Arsenic 0:6ab01cb28fd0 207 randoms++;
Arsenic 0:6ab01cb28fd0 208 if(!up)upE = 1;
Arsenic 0:6ab01cb28fd0 209 if(!down)downE = 1;
Arsenic 0:6ab01cb28fd0 210 if(!right)rightE = 1;
Arsenic 0:6ab01cb28fd0 211 if(!left)leftE = 1;
Arsenic 0:6ab01cb28fd0 212 if(!fire)fireE = 1;
Arsenic 0:6ab01cb28fd0 213 if(fire && fireE){
Arsenic 0:6ab01cb28fd0 214 randoms = 0;
Arsenic 0:6ab01cb28fd0 215 fireE = 0;
Arsenic 0:6ab01cb28fd0 216 shot = 1;
Arsenic 0:6ab01cb28fd0 217 }else if(up && upE && racketP1!=0){
Arsenic 0:6ab01cb28fd0 218 randoms = 0;
Arsenic 0:6ab01cb28fd0 219 upE = 0;
Arsenic 0:6ab01cb28fd0 220 racketP1--;
Arsenic 0:6ab01cb28fd0 221 }else if(down && downE && racketP1!=3){
Arsenic 0:6ab01cb28fd0 222 randoms = 0;
Arsenic 0:6ab01cb28fd0 223 downE = 0;
Arsenic 0:6ab01cb28fd0 224 racketP1++;
Arsenic 0:6ab01cb28fd0 225 }
Arsenic 0:6ab01cb28fd0 226 }
Arsenic 0:6ab01cb28fd0 227 }