New version!!
Dependencies: C12832 MMA7660 mbed
Fork of shot_game by
main.cpp@0:6ab01cb28fd0, 2015-04-15 (annotated)
- Committer:
- Arsenic
- Date:
- Wed Apr 15 08:22:43 2015 +0000
- Revision:
- 0:6ab01cb28fd0
- Child:
- 1:880253791d78
- Child:
- 2:f5dbfedf7489
test
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); |
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 | 0:6ab01cb28fd0 | 52 | lcd.rect(9, (racketP1*8)+3, 127, (racketP1*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 | 0:6ab01cb28fd0 | 59 | else if(enemyY == racketP1 && shot){ |
Arsenic | 0:6ab01cb28fd0 | 60 | if(sownd<9)sownd = 5; |
Arsenic | 0:6ab01cb28fd0 | 61 | score++; |
Arsenic | 0:6ab01cb28fd0 | 62 | // lcd.fillcircle(enemyX+3, (enemyY*8)+4, 14, 1); |
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 | 0:6ab01cb28fd0 | 82 | lcd.rect(0, racketP1*8, 7, (racketP1*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 | 0:6ab01cb28fd0 | 204 | }else if(up && upE && racketP1!=0){ |
Arsenic | 0:6ab01cb28fd0 | 205 | randoms = 0; |
Arsenic | 0:6ab01cb28fd0 | 206 | upE = 0; |
Arsenic | 0:6ab01cb28fd0 | 207 | racketP1--; |
Arsenic | 0:6ab01cb28fd0 | 208 | }else if(down && downE && racketP1!=3){ |
Arsenic | 0:6ab01cb28fd0 | 209 | randoms = 0; |
Arsenic | 0:6ab01cb28fd0 | 210 | downE = 0; |
Arsenic | 0:6ab01cb28fd0 | 211 | racketP1++; |
Arsenic | 0:6ab01cb28fd0 | 212 | } |
Arsenic | 0:6ab01cb28fd0 | 213 | } |
Arsenic | 0:6ab01cb28fd0 | 214 | } |