New version!!
Dependencies: C12832 MMA7660 mbed
Fork of shot_game by
main.cpp@1:880253791d78, 2015-04-16 (annotated)
- Committer:
- green_hatano
- Date:
- Thu Apr 16 06:19:56 2015 +0000
- Revision:
- 1:880253791d78
- Parent:
- 0:6ab01cb28fd0
- Child:
- 3:f8b5d05b3e92
?
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 | |
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 | } |