World War Zombies! Kirby vs. Zombies in an endless post apocalyptic brawl!
Dependencies: 4DGL-uLCD-SE SDFileSystem mbed-rtos mbed wave_player
main.cpp@0:4b2a1290ce3a, 2016-03-16 (annotated)
- Committer:
- zjohnson31
- Date:
- Wed Mar 16 17:04:50 2016 +0000
- Revision:
- 0:4b2a1290ce3a
publish;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
zjohnson31 | 0:4b2a1290ce3a | 1 | #include "mbed.h" |
zjohnson31 | 0:4b2a1290ce3a | 2 | #include "globals.h" |
zjohnson31 | 0:4b2a1290ce3a | 3 | #include "Zombie.h" |
zjohnson31 | 0:4b2a1290ce3a | 4 | #include "Player.h" |
zjohnson31 | 0:4b2a1290ce3a | 5 | #include "uLCD_4DGL.h" |
zjohnson31 | 0:4b2a1290ce3a | 6 | #include "wave_player.h" |
zjohnson31 | 0:4b2a1290ce3a | 7 | #include "SDFileSystem.h" |
zjohnson31 | 0:4b2a1290ce3a | 8 | #include "microphone.h" |
zjohnson31 | 0:4b2a1290ce3a | 9 | #include "rtos.h" |
zjohnson31 | 0:4b2a1290ce3a | 10 | |
zjohnson31 | 0:4b2a1290ce3a | 11 | void playSound(char * wav); |
zjohnson31 | 0:4b2a1290ce3a | 12 | void noiseThread(void const* name); |
zjohnson31 | 0:4b2a1290ce3a | 13 | |
zjohnson31 | 0:4b2a1290ce3a | 14 | // Global Objects |
zjohnson31 | 0:4b2a1290ce3a | 15 | AnalogOut Speaker(p18); |
zjohnson31 | 0:4b2a1290ce3a | 16 | SDFileSystem sd(p5, p6, p7, p8, "sd"); // SD card and filesystem (mosi, miso, sck, cs) |
zjohnson31 | 0:4b2a1290ce3a | 17 | wave_player waver(&Speaker); |
zjohnson31 | 0:4b2a1290ce3a | 18 | uLCD_4DGL uLCD(p28,p27,p30); |
zjohnson31 | 0:4b2a1290ce3a | 19 | microphone mic(p16); |
zjohnson31 | 0:4b2a1290ce3a | 20 | DigitalOut myled(LED1); |
zjohnson31 | 0:4b2a1290ce3a | 21 | AnalogIn ir(p20); |
zjohnson31 | 0:4b2a1290ce3a | 22 | Player p; |
zjohnson31 | 0:4b2a1290ce3a | 23 | Timer timer; |
zjohnson31 | 0:4b2a1290ce3a | 24 | |
zjohnson31 | 0:4b2a1290ce3a | 25 | Zombie * zombies = new Zombie[4]; |
zjohnson31 | 0:4b2a1290ce3a | 26 | Zombie * z; |
zjohnson31 | 0:4b2a1290ce3a | 27 | float noise; |
zjohnson31 | 0:4b2a1290ce3a | 28 | bool gameover = false; |
zjohnson31 | 0:4b2a1290ce3a | 29 | |
zjohnson31 | 0:4b2a1290ce3a | 30 | void small_explosion(int, int); |
zjohnson31 | 0:4b2a1290ce3a | 31 | void drawZombies(); |
zjohnson31 | 0:4b2a1290ce3a | 32 | void checkCollisions(); |
zjohnson31 | 0:4b2a1290ce3a | 33 | void eraseZombies(); |
zjohnson31 | 0:4b2a1290ce3a | 34 | void updateZombies(); |
zjohnson31 | 0:4b2a1290ce3a | 35 | void killFirstZombie(bool); |
zjohnson31 | 0:4b2a1290ce3a | 36 | int ammo = 20; |
zjohnson31 | 0:4b2a1290ce3a | 37 | int score = 0; |
zjohnson31 | 0:4b2a1290ce3a | 38 | int jj = 5; |
zjohnson31 | 0:4b2a1290ce3a | 39 | int jumpcounter = jj; |
zjohnson31 | 0:4b2a1290ce3a | 40 | Mutex lcd_mutex; |
zjohnson31 | 0:4b2a1290ce3a | 41 | |
zjohnson31 | 0:4b2a1290ce3a | 42 | |
zjohnson31 | 0:4b2a1290ce3a | 43 | |
zjohnson31 | 0:4b2a1290ce3a | 44 | int main() { |
zjohnson31 | 0:4b2a1290ce3a | 45 | Thread t1(noiseThread); |
zjohnson31 | 0:4b2a1290ce3a | 46 | |
zjohnson31 | 0:4b2a1290ce3a | 47 | //locals |
zjohnson31 | 0:4b2a1290ce3a | 48 | //int tick,tock = 0; |
zjohnson31 | 0:4b2a1290ce3a | 49 | int start = 1; |
zjohnson31 | 0:4b2a1290ce3a | 50 | bool ready,jump = false; |
zjohnson31 | 0:4b2a1290ce3a | 51 | float irRead; |
zjohnson31 | 0:4b2a1290ce3a | 52 | timer.start(); |
zjohnson31 | 0:4b2a1290ce3a | 53 | |
zjohnson31 | 0:4b2a1290ce3a | 54 | |
zjohnson31 | 0:4b2a1290ce3a | 55 | start = 1; |
zjohnson31 | 0:4b2a1290ce3a | 56 | if(start == 1){ |
zjohnson31 | 0:4b2a1290ce3a | 57 | uLCD.text_string("", 0, 0, FONT_7X8, WHITE); |
zjohnson31 | 0:4b2a1290ce3a | 58 | uLCD.text_width(2); |
zjohnson31 | 0:4b2a1290ce3a | 59 | uLCD.text_height(2); |
zjohnson31 | 0:4b2a1290ce3a | 60 | uLCD.printf("WORLD WAR \nZOMBIES!\n\n\n"); |
zjohnson31 | 0:4b2a1290ce3a | 61 | wait(1); |
zjohnson31 | 0:4b2a1290ce3a | 62 | uLCD.text_width(1); |
zjohnson31 | 0:4b2a1290ce3a | 63 | uLCD.text_height(1); |
zjohnson31 | 0:4b2a1290ce3a | 64 | uLCD.printf("\n\nTo fire, place \nhand in front \nof IR, to jump\nsay jump in\nthe mic."); |
zjohnson31 | 0:4b2a1290ce3a | 65 | wait(5); |
zjohnson31 | 0:4b2a1290ce3a | 66 | uLCD.cls(); |
zjohnson31 | 0:4b2a1290ce3a | 67 | uLCD.text_string("", 0, 0, FONT_7X8, RED); |
zjohnson31 | 0:4b2a1290ce3a | 68 | uLCD.printf("To begin the\ngame, make a\nnoise near the\nmic!"); |
zjohnson31 | 0:4b2a1290ce3a | 69 | while(!ready){ |
zjohnson31 | 0:4b2a1290ce3a | 70 | noise = int(abs((mic - (0.67/3.3)))*500.0); |
zjohnson31 | 0:4b2a1290ce3a | 71 | if(noise>3){ |
zjohnson31 | 0:4b2a1290ce3a | 72 | ready = true; |
zjohnson31 | 0:4b2a1290ce3a | 73 | uLCD.cls(); |
zjohnson31 | 0:4b2a1290ce3a | 74 | noise = 0; |
zjohnson31 | 0:4b2a1290ce3a | 75 | } |
zjohnson31 | 0:4b2a1290ce3a | 76 | }//while |
zjohnson31 | 0:4b2a1290ce3a | 77 | }//if |
zjohnson31 | 0:4b2a1290ce3a | 78 | |
zjohnson31 | 0:4b2a1290ce3a | 79 | //Zombie z1,z2,z3,z4; |
zjohnson31 | 0:4b2a1290ce3a | 80 | for (int i = 1; i < 4; i++) |
zjohnson31 | 0:4b2a1290ce3a | 81 | { |
zjohnson31 | 0:4b2a1290ce3a | 82 | zombies[i].posX = zombies[i-1].posX + 45; |
zjohnson31 | 0:4b2a1290ce3a | 83 | } |
zjohnson31 | 0:4b2a1290ce3a | 84 | float fmic = .67/3.3; |
zjohnson31 | 0:4b2a1290ce3a | 85 | float pmic = fmic; |
zjohnson31 | 0:4b2a1290ce3a | 86 | p.draw(); |
zjohnson31 | 0:4b2a1290ce3a | 87 | while(!gameover){ |
zjohnson31 | 0:4b2a1290ce3a | 88 | uLCD.locate(0,0); |
zjohnson31 | 0:4b2a1290ce3a | 89 | uLCD.printf("Ammo: %d\nScore: %d\n", p.ammo, killed); |
zjohnson31 | 0:4b2a1290ce3a | 90 | pmic = fmic; |
zjohnson31 | 0:4b2a1290ce3a | 91 | fmic = (abs(mic - (0.67/3.3)))*500.0; |
zjohnson31 | 0:4b2a1290ce3a | 92 | // uLCD.printf("mic: %f", fmic); |
zjohnson31 | 0:4b2a1290ce3a | 93 | //drawZombies(); |
zjohnson31 | 0:4b2a1290ce3a | 94 | checkCollisions(); |
zjohnson31 | 0:4b2a1290ce3a | 95 | //eraseZombies(); |
zjohnson31 | 0:4b2a1290ce3a | 96 | updateZombies(); |
zjohnson31 | 0:4b2a1290ce3a | 97 | |
zjohnson31 | 0:4b2a1290ce3a | 98 | irRead = ir; |
zjohnson31 | 0:4b2a1290ce3a | 99 | irRead -= 1; |
zjohnson31 | 0:4b2a1290ce3a | 100 | irRead *= -1; |
zjohnson31 | 0:4b2a1290ce3a | 101 | |
zjohnson31 | 0:4b2a1290ce3a | 102 | jump = jump || fmic-pmic > 1.5; |
zjohnson31 | 0:4b2a1290ce3a | 103 | |
zjohnson31 | 0:4b2a1290ce3a | 104 | if(jump && jumpcounter > 0){ |
zjohnson31 | 0:4b2a1290ce3a | 105 | if (jumpcounter == jj) |
zjohnson31 | 0:4b2a1290ce3a | 106 | { |
zjohnson31 | 0:4b2a1290ce3a | 107 | p.erase(); |
zjohnson31 | 0:4b2a1290ce3a | 108 | p.posY = 127-18; |
zjohnson31 | 0:4b2a1290ce3a | 109 | p.draw(); |
zjohnson31 | 0:4b2a1290ce3a | 110 | } |
zjohnson31 | 0:4b2a1290ce3a | 111 | jumpcounter--; |
zjohnson31 | 0:4b2a1290ce3a | 112 | }// jump |
zjohnson31 | 0:4b2a1290ce3a | 113 | else if (jumpcounter == 0) |
zjohnson31 | 0:4b2a1290ce3a | 114 | { |
zjohnson31 | 0:4b2a1290ce3a | 115 | p.erase(); |
zjohnson31 | 0:4b2a1290ce3a | 116 | p.posY = 127; |
zjohnson31 | 0:4b2a1290ce3a | 117 | jumpcounter = jj; |
zjohnson31 | 0:4b2a1290ce3a | 118 | jump = false; |
zjohnson31 | 0:4b2a1290ce3a | 119 | p.draw(); |
zjohnson31 | 0:4b2a1290ce3a | 120 | } |
zjohnson31 | 0:4b2a1290ce3a | 121 | |
zjohnson31 | 0:4b2a1290ce3a | 122 | // p.draw(); |
zjohnson31 | 0:4b2a1290ce3a | 123 | |
zjohnson31 | 0:4b2a1290ce3a | 124 | wait(0.1); |
zjohnson31 | 0:4b2a1290ce3a | 125 | |
zjohnson31 | 0:4b2a1290ce3a | 126 | //player input to shoot zombie |
zjohnson31 | 0:4b2a1290ce3a | 127 | if(irRead < 0.5){ |
zjohnson31 | 0:4b2a1290ce3a | 128 | //check collision with zombies if there is ammo |
zjohnson31 | 0:4b2a1290ce3a | 129 | if(p.ammo>0){ |
zjohnson31 | 0:4b2a1290ce3a | 130 | //shoot |
zjohnson31 | 0:4b2a1290ce3a | 131 | p.ammo -=1; |
zjohnson31 | 0:4b2a1290ce3a | 132 | uLCD.filled_rectangle(0, 0,127,127,WHITE); |
zjohnson31 | 0:4b2a1290ce3a | 133 | |
zjohnson31 | 0:4b2a1290ce3a | 134 | //if zombie on screen, kill front most |
zjohnson31 | 0:4b2a1290ce3a | 135 | // function finds first zombie, kill it, increment kill counter |
zjohnson31 | 0:4b2a1290ce3a | 136 | killFirstZombie(jump); |
zjohnson31 | 0:4b2a1290ce3a | 137 | |
zjohnson31 | 0:4b2a1290ce3a | 138 | |
zjohnson31 | 0:4b2a1290ce3a | 139 | uLCD.filled_rectangle(0, 0,127,127,BLACK); |
zjohnson31 | 0:4b2a1290ce3a | 140 | p.draw(); |
zjohnson31 | 0:4b2a1290ce3a | 141 | } |
zjohnson31 | 0:4b2a1290ce3a | 142 | } |
zjohnson31 | 0:4b2a1290ce3a | 143 | |
zjohnson31 | 0:4b2a1290ce3a | 144 | wait(1/10000); |
zjohnson31 | 0:4b2a1290ce3a | 145 | }//while not gameover |
zjohnson31 | 0:4b2a1290ce3a | 146 | uLCD.cls(); |
zjohnson31 | 0:4b2a1290ce3a | 147 | |
zjohnson31 | 0:4b2a1290ce3a | 148 | small_explosion(115, 119); |
zjohnson31 | 0:4b2a1290ce3a | 149 | small_explosion(38, 77); |
zjohnson31 | 0:4b2a1290ce3a | 150 | small_explosion(66, 39); |
zjohnson31 | 0:4b2a1290ce3a | 151 | small_explosion(33, 50); |
zjohnson31 | 0:4b2a1290ce3a | 152 | small_explosion(72, 60); |
zjohnson31 | 0:4b2a1290ce3a | 153 | small_explosion(8, 57); |
zjohnson31 | 0:4b2a1290ce3a | 154 | small_explosion(30, 80); |
zjohnson31 | 0:4b2a1290ce3a | 155 | small_explosion(46, 48); |
zjohnson31 | 0:4b2a1290ce3a | 156 | small_explosion(76, 44); |
zjohnson31 | 0:4b2a1290ce3a | 157 | small_explosion(49, 101); |
zjohnson31 | 0:4b2a1290ce3a | 158 | small_explosion(p.posX,p.posY-5); |
zjohnson31 | 0:4b2a1290ce3a | 159 | uLCD.text_string("", 0, 0, FONT_7X8, WHITE); |
zjohnson31 | 0:4b2a1290ce3a | 160 | uLCD.text_width(2); |
zjohnson31 | 0:4b2a1290ce3a | 161 | uLCD.text_height(2); |
zjohnson31 | 0:4b2a1290ce3a | 162 | uLCD.printf("GAME OVER \nScore: %d\n\n\n", killed); |
zjohnson31 | 0:4b2a1290ce3a | 163 | }//main |
zjohnson31 | 0:4b2a1290ce3a | 164 | |
zjohnson31 | 0:4b2a1290ce3a | 165 | //plays a wav file from sd card |
zjohnson31 | 0:4b2a1290ce3a | 166 | void playSound(char * wav) |
zjohnson31 | 0:4b2a1290ce3a | 167 | { |
zjohnson31 | 0:4b2a1290ce3a | 168 | // open wav file |
zjohnson31 | 0:4b2a1290ce3a | 169 | FILE *wave_file; |
zjohnson31 | 0:4b2a1290ce3a | 170 | wave_file=fopen(wav,"r"); |
zjohnson31 | 0:4b2a1290ce3a | 171 | |
zjohnson31 | 0:4b2a1290ce3a | 172 | if(wave_file == NULL){ |
zjohnson31 | 0:4b2a1290ce3a | 173 | uLCD.locate(9,0); |
zjohnson31 | 0:4b2a1290ce3a | 174 | uLCD.printf("ERROR_SD"); |
zjohnson31 | 0:4b2a1290ce3a | 175 | return; |
zjohnson31 | 0:4b2a1290ce3a | 176 | } |
zjohnson31 | 0:4b2a1290ce3a | 177 | |
zjohnson31 | 0:4b2a1290ce3a | 178 | // play wav file |
zjohnson31 | 0:4b2a1290ce3a | 179 | waver.play(wave_file); |
zjohnson31 | 0:4b2a1290ce3a | 180 | |
zjohnson31 | 0:4b2a1290ce3a | 181 | fclose(wave_file); |
zjohnson31 | 0:4b2a1290ce3a | 182 | return; |
zjohnson31 | 0:4b2a1290ce3a | 183 | }//playsound |
zjohnson31 | 0:4b2a1290ce3a | 184 | |
zjohnson31 | 0:4b2a1290ce3a | 185 | void noiseThread(void const* name){ |
zjohnson31 | 0:4b2a1290ce3a | 186 | |
zjohnson31 | 0:4b2a1290ce3a | 187 | //Thread::wait(2); |
zjohnson31 | 0:4b2a1290ce3a | 188 | while(1) playSound("/sd/wavfiles/titlemusic.wav"); |
zjohnson31 | 0:4b2a1290ce3a | 189 | //{ |
zjohnson31 | 0:4b2a1290ce3a | 190 | //noise = (abs((mic - (0.67/3.3)))*500.0); |
zjohnson31 | 0:4b2a1290ce3a | 191 | //Use an 8kHz audio sample rate (phone quality audio); |
zjohnson31 | 0:4b2a1290ce3a | 192 | // Thread::wait(1.0/8000.0); |
zjohnson31 | 0:4b2a1290ce3a | 193 | //} |
zjohnson31 | 0:4b2a1290ce3a | 194 | }//noisethread |
zjohnson31 | 0:4b2a1290ce3a | 195 | |
zjohnson31 | 0:4b2a1290ce3a | 196 | |
zjohnson31 | 0:4b2a1290ce3a | 197 | // this function draws all the zombies on the screen |
zjohnson31 | 0:4b2a1290ce3a | 198 | void drawZombies() |
zjohnson31 | 0:4b2a1290ce3a | 199 | { |
zjohnson31 | 0:4b2a1290ce3a | 200 | for (int i = 0; i < 4; i++) |
zjohnson31 | 0:4b2a1290ce3a | 201 | { |
zjohnson31 | 0:4b2a1290ce3a | 202 | z = &zombies[i]; |
zjohnson31 | 0:4b2a1290ce3a | 203 | if ((*z).alive && (*z).posX <= 127) |
zjohnson31 | 0:4b2a1290ce3a | 204 | { |
zjohnson31 | 0:4b2a1290ce3a | 205 | (*z).draw(); |
zjohnson31 | 0:4b2a1290ce3a | 206 | } |
zjohnson31 | 0:4b2a1290ce3a | 207 | } |
zjohnson31 | 0:4b2a1290ce3a | 208 | } |
zjohnson31 | 0:4b2a1290ce3a | 209 | |
zjohnson31 | 0:4b2a1290ce3a | 210 | void checkCollisions() |
zjohnson31 | 0:4b2a1290ce3a | 211 | { |
zjohnson31 | 0:4b2a1290ce3a | 212 | for (int i = 0; i < 4; i++) |
zjohnson31 | 0:4b2a1290ce3a | 213 | { |
zjohnson31 | 0:4b2a1290ce3a | 214 | z = &zombies[i]; |
zjohnson31 | 0:4b2a1290ce3a | 215 | int x1 = p.posX; |
zjohnson31 | 0:4b2a1290ce3a | 216 | int x2 = p.posX + 10; |
zjohnson31 | 0:4b2a1290ce3a | 217 | int y = p.posY; |
zjohnson31 | 0:4b2a1290ce3a | 218 | if (((*z).posX-12 >= x1 && (*z).posX-12 <= x2) && (y == (*z).posY)) |
zjohnson31 | 0:4b2a1290ce3a | 219 | { |
zjohnson31 | 0:4b2a1290ce3a | 220 | gameover = true; |
zjohnson31 | 0:4b2a1290ce3a | 221 | } |
zjohnson31 | 0:4b2a1290ce3a | 222 | } |
zjohnson31 | 0:4b2a1290ce3a | 223 | } |
zjohnson31 | 0:4b2a1290ce3a | 224 | |
zjohnson31 | 0:4b2a1290ce3a | 225 | void eraseZombies() |
zjohnson31 | 0:4b2a1290ce3a | 226 | { |
zjohnson31 | 0:4b2a1290ce3a | 227 | for (int i = 0; i < 4; i++) |
zjohnson31 | 0:4b2a1290ce3a | 228 | { |
zjohnson31 | 0:4b2a1290ce3a | 229 | z = &zombies[i]; |
zjohnson31 | 0:4b2a1290ce3a | 230 | if ((*z).alive && (*z).posX <= 127) |
zjohnson31 | 0:4b2a1290ce3a | 231 | { |
zjohnson31 | 0:4b2a1290ce3a | 232 | (*z).erase(); |
zjohnson31 | 0:4b2a1290ce3a | 233 | } |
zjohnson31 | 0:4b2a1290ce3a | 234 | } |
zjohnson31 | 0:4b2a1290ce3a | 235 | } |
zjohnson31 | 0:4b2a1290ce3a | 236 | |
zjohnson31 | 0:4b2a1290ce3a | 237 | void updateZombies() |
zjohnson31 | 0:4b2a1290ce3a | 238 | { |
zjohnson31 | 0:4b2a1290ce3a | 239 | for (int i = 0; i < 4; i++) |
zjohnson31 | 0:4b2a1290ce3a | 240 | { |
zjohnson31 | 0:4b2a1290ce3a | 241 | z = &zombies[i]; |
zjohnson31 | 0:4b2a1290ce3a | 242 | if ((*z).alive) |
zjohnson31 | 0:4b2a1290ce3a | 243 | { |
zjohnson31 | 0:4b2a1290ce3a | 244 | (*z).move(); |
zjohnson31 | 0:4b2a1290ce3a | 245 | if ((*z).posX <= 5) |
zjohnson31 | 0:4b2a1290ce3a | 246 | { |
zjohnson31 | 0:4b2a1290ce3a | 247 | z->kill(); |
zjohnson31 | 0:4b2a1290ce3a | 248 | z->erase(); |
zjohnson31 | 0:4b2a1290ce3a | 249 | } |
zjohnson31 | 0:4b2a1290ce3a | 250 | } |
zjohnson31 | 0:4b2a1290ce3a | 251 | } |
zjohnson31 | 0:4b2a1290ce3a | 252 | } |
zjohnson31 | 0:4b2a1290ce3a | 253 | |
zjohnson31 | 0:4b2a1290ce3a | 254 | void killFirstZombie(bool jump) |
zjohnson31 | 0:4b2a1290ce3a | 255 | { |
zjohnson31 | 0:4b2a1290ce3a | 256 | int first = 0; |
zjohnson31 | 0:4b2a1290ce3a | 257 | int last = 0; |
zjohnson31 | 0:4b2a1290ce3a | 258 | int x = 128; |
zjohnson31 | 0:4b2a1290ce3a | 259 | int x2 = 128; |
zjohnson31 | 0:4b2a1290ce3a | 260 | // find first zombie |
zjohnson31 | 0:4b2a1290ce3a | 261 | for (int i = 0; i < 4; i++) |
zjohnson31 | 0:4b2a1290ce3a | 262 | { |
zjohnson31 | 0:4b2a1290ce3a | 263 | z = &zombies[i]; |
zjohnson31 | 0:4b2a1290ce3a | 264 | if ((*z).posX < x && z->alive) |
zjohnson31 | 0:4b2a1290ce3a | 265 | { |
zjohnson31 | 0:4b2a1290ce3a | 266 | first = i; |
zjohnson31 | 0:4b2a1290ce3a | 267 | x = (*z).posX; |
zjohnson31 | 0:4b2a1290ce3a | 268 | } |
zjohnson31 | 0:4b2a1290ce3a | 269 | else if ((*z).posX > x2 && (*z).alive) |
zjohnson31 | 0:4b2a1290ce3a | 270 | { |
zjohnson31 | 0:4b2a1290ce3a | 271 | last = i; |
zjohnson31 | 0:4b2a1290ce3a | 272 | x2 = (*z).posX; |
zjohnson31 | 0:4b2a1290ce3a | 273 | } |
zjohnson31 | 0:4b2a1290ce3a | 274 | } |
zjohnson31 | 0:4b2a1290ce3a | 275 | // kill first zombie |
zjohnson31 | 0:4b2a1290ce3a | 276 | z = &zombies[first]; |
zjohnson31 | 0:4b2a1290ce3a | 277 | if (z->alive) |
zjohnson31 | 0:4b2a1290ce3a | 278 | { |
zjohnson31 | 0:4b2a1290ce3a | 279 | z->kill(); |
zjohnson31 | 0:4b2a1290ce3a | 280 | if (jump) killed++; |
zjohnson31 | 0:4b2a1290ce3a | 281 | z->erase(); |
zjohnson31 | 0:4b2a1290ce3a | 282 | small_explosion(x, 125); |
zjohnson31 | 0:4b2a1290ce3a | 283 | z->posX = x2 + 45; |
zjohnson31 | 0:4b2a1290ce3a | 284 | z->alive = true; |
zjohnson31 | 0:4b2a1290ce3a | 285 | } |
zjohnson31 | 0:4b2a1290ce3a | 286 | } |
zjohnson31 | 0:4b2a1290ce3a | 287 | |
zjohnson31 | 0:4b2a1290ce3a | 288 | /* |
zjohnson31 | 0:4b2a1290ce3a | 289 | * This makes explosion |
zjohnson31 | 0:4b2a1290ce3a | 290 | */ |
zjohnson31 | 0:4b2a1290ce3a | 291 | void small_explosion(int x, int y) { |
zjohnson31 | 0:4b2a1290ce3a | 292 | uLCD.filled_circle(x, y, 2, 0xFF22BB); |
zjohnson31 | 0:4b2a1290ce3a | 293 | uLCD.filled_circle(x, y, 1, 0); |
zjohnson31 | 0:4b2a1290ce3a | 294 | uLCD.filled_circle(x, y, 3, 0xFF22BB); |
zjohnson31 | 0:4b2a1290ce3a | 295 | uLCD.filled_circle(x, y, 1, 0); |
zjohnson31 | 0:4b2a1290ce3a | 296 | uLCD.filled_circle(x, y, 4, 0xFF22BB); |
zjohnson31 | 0:4b2a1290ce3a | 297 | uLCD.filled_circle(x, y, 2, 0); |
zjohnson31 | 0:4b2a1290ce3a | 298 | uLCD.filled_circle(x, y, 5, 0xFF22BB); |
zjohnson31 | 0:4b2a1290ce3a | 299 | uLCD.filled_circle(x, y, 3, 0); |
zjohnson31 | 0:4b2a1290ce3a | 300 | uLCD.filled_circle(x, y, 6, 0xFF22BB); |
zjohnson31 | 0:4b2a1290ce3a | 301 | uLCD.filled_circle(x, y, 4, 0); |
zjohnson31 | 0:4b2a1290ce3a | 302 | uLCD.filled_circle(x, y, 7, 0xFF22BB); |
zjohnson31 | 0:4b2a1290ce3a | 303 | uLCD.filled_circle(x, y, 5, 0); |
zjohnson31 | 0:4b2a1290ce3a | 304 | uLCD.filled_circle(x, y, 7, 0); |
zjohnson31 | 0:4b2a1290ce3a | 305 | } |