New version!!

Dependencies:   C12832 MMA7660 mbed

Fork of shot_game by green hatano

Committer:
green_hatano
Date:
Thu Apr 16 08:56:01 2015 +0000
Revision:
3:f8b5d05b3e92
Parent:
1:880253791d78

        

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