New version!!
Dependencies: C12832 MMA7660 mbed
Fork of shot_game by
main.cpp@3:f8b5d05b3e92, 2015-04-16 (annotated)
- Committer:
- green_hatano
- Date:
- Thu Apr 16 08:56:01 2015 +0000
- Revision:
- 3:f8b5d05b3e92
- Parent:
- 1:880253791d78
Who changed what in which revision?
User | Revision | Line number | New 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 | } |