Ben Evans / Mbed 2 deprecated Defender_Game

Dependencies:   mbed

Committer:
evanso
Date:
Mon May 25 18:39:51 2020 +0000
Revision:
82:3211b31e9421
Parent:
81:78c461e6770b
Child:
85:87bc28b151d8
Made commenting and formatting of code more consistent.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
evanso 80:870bc6b4bf08 1 #include "PlayEngine.h"
evanso 80:870bc6b4bf08 2
evanso 82:3211b31e9421 3 // Spaceship control -----------------------------------------------------------
evanso 80:870bc6b4bf08 4
evanso 82:3211b31e9421 5 void PlayEngine::read_joystick_direction() {
evanso 80:870bc6b4bf08 6 d_ = pad.get_direction();
evanso 80:870bc6b4bf08 7 }
evanso 80:870bc6b4bf08 8
evanso 82:3211b31e9421 9 void PlayEngine::read_accelerometer_direction(float roll,float pitch) {
evanso 80:870bc6b4bf08 10 // printf("Pitch = %f Roll = %f\n", pitch, roll);
evanso 80:870bc6b4bf08 11
evanso 82:3211b31e9421 12 // North
evanso 82:3211b31e9421 13 if(pitch >= -35) {
evanso 82:3211b31e9421 14 if(roll >= 10) {
evanso 80:870bc6b4bf08 15 d_ = NE;
evanso 82:3211b31e9421 16 }else if (roll <= -10) {
evanso 80:870bc6b4bf08 17 d_ = NW;
evanso 80:870bc6b4bf08 18 }else {
evanso 80:870bc6b4bf08 19 d_ = N;
evanso 80:870bc6b4bf08 20 }
evanso 82:3211b31e9421 21 // South
evanso 82:3211b31e9421 22 }else if(pitch <= -55) {
evanso 82:3211b31e9421 23 if (roll >= 10) {
evanso 80:870bc6b4bf08 24 d_ = SE;
evanso 82:3211b31e9421 25 }else if(roll <= -10) {
evanso 80:870bc6b4bf08 26 d_ = SW;
evanso 80:870bc6b4bf08 27 }else {
evanso 80:870bc6b4bf08 28 d_ = S;
evanso 80:870bc6b4bf08 29 }
evanso 80:870bc6b4bf08 30 // East/west
evanso 80:870bc6b4bf08 31 }else {
evanso 82:3211b31e9421 32 if (roll >= 10) {
evanso 80:870bc6b4bf08 33 d_ = E;
evanso 82:3211b31e9421 34 }else if(roll <= -10) {
evanso 80:870bc6b4bf08 35 d_ = W;
evanso 80:870bc6b4bf08 36 }else{
evanso 80:870bc6b4bf08 37 d_ = CENTRE;
evanso 80:870bc6b4bf08 38 }
evanso 80:870bc6b4bf08 39 }
evanso 80:870bc6b4bf08 40 }
evanso 80:870bc6b4bf08 41
evanso 82:3211b31e9421 42 void PlayEngine::spaceship_lives_leds() {
evanso 80:870bc6b4bf08 43 pad.leds_off();
evanso 80:870bc6b4bf08 44
evanso 82:3211b31e9421 45 // Top two red leds on if 1 lives left
evanso 82:3211b31e9421 46 if(spaceship_lives_ >= 1) {
evanso 80:870bc6b4bf08 47 pad.led(1,1);
evanso 80:870bc6b4bf08 48 pad.led(4,1);
evanso 80:870bc6b4bf08 49 }
evanso 80:870bc6b4bf08 50
evanso 82:3211b31e9421 51 // Middle two orange leds also on if 2 lives left
evanso 82:3211b31e9421 52 if(spaceship_lives_ >= 2) {
evanso 80:870bc6b4bf08 53 pad.led(2,1);
evanso 80:870bc6b4bf08 54 pad.led(5,1);
evanso 80:870bc6b4bf08 55 }
evanso 80:870bc6b4bf08 56
evanso 82:3211b31e9421 57 // Bottom two red leds also on if 3 lives left
evanso 82:3211b31e9421 58 if(spaceship_lives_ == 3) {
evanso 80:870bc6b4bf08 59 pad.led(3,1);
evanso 80:870bc6b4bf08 60 pad.led(6,1);
evanso 80:870bc6b4bf08 61 }
evanso 80:870bc6b4bf08 62 }
evanso 80:870bc6b4bf08 63
evanso 80:870bc6b4bf08 64
evanso 80:870bc6b4bf08 65
evanso 80:870bc6b4bf08 66
evanso 82:3211b31e9421 67 // Weapon control --------------------------------------------------------------
evanso 80:870bc6b4bf08 68
evanso 82:3211b31e9421 69 void PlayEngine::create_weapons_bullets() {
evanso 82:3211b31e9421 70 // Controlls speed that bullet can be fired
evanso 82:3211b31e9421 71 if (pad.A_pressed() && bullet_timer_ <=0) {
evanso 81:78c461e6770b 72 // Bullet object
evanso 81:78c461e6770b 73 Weapons new_bullet;
evanso 81:78c461e6770b 74
evanso 81:78c461e6770b 75 new_bullet.init(spaceship.get_pos(),
evanso 81:78c461e6770b 76 spaceship.get_spaceship_sprite_direction(), true);
evanso 81:78c461e6770b 77
evanso 81:78c461e6770b 78 // Stores bullet object in vector
evanso 81:78c461e6770b 79 bullet_vector.push_back(new_bullet);
evanso 81:78c461e6770b 80 bullet_timer_ = 10;
evanso 81:78c461e6770b 81 }
evanso 81:78c461e6770b 82 bullet_timer_--;
evanso 80:870bc6b4bf08 83 }
evanso 80:870bc6b4bf08 84
evanso 82:3211b31e9421 85 void PlayEngine::create_weapons_smart_bomb() {
evanso 82:3211b31e9421 86 if (pad.B_pressed() && smart_bomb_counter_ > 0 && smart_bomb_timer_ <=0) {
evanso 80:870bc6b4bf08 87 weapons.smart_bomb(lcd);
evanso 80:870bc6b4bf08 88 smart_bomb_counter_--;
evanso 80:870bc6b4bf08 89
evanso 82:3211b31e9421 90 // Deletes alien object if on screen and person object if abducted
evanso 82:3211b31e9421 91 for (int i = (alien_vector.size() -1) ; i >= 0 ; i--) {
evanso 80:870bc6b4bf08 92 Vector2D alien_pos = alien_vector[i].get_pos();
evanso 81:78c461e6770b 93
evanso 80:870bc6b4bf08 94 // Creats explosion if alien was on the screen
evanso 82:3211b31e9421 95 if(alien_pos.x <= 84 && alien_pos.x >= -6) {
evanso 81:78c461e6770b 96 create_explosion(alien_pos);
evanso 80:870bc6b4bf08 97 alien_vector.erase(alien_vector.begin()+ i);
evanso 80:870bc6b4bf08 98 points_ ++;
evanso 80:870bc6b4bf08 99 }
evanso 81:78c461e6770b 100
evanso 82:3211b31e9421 101 // Delete person object if was being abducted by destroyed alien
evanso 82:3211b31e9421 102 if(alien_vector[i].get_collision_people_element() > -1) {
evanso 81:78c461e6770b 103 people_vector.erase(people_vector.begin() +
evanso 81:78c461e6770b 104 alien_vector[i].get_collision_people_element());
evanso 81:78c461e6770b 105 }
evanso 80:870bc6b4bf08 106 }
evanso 81:78c461e6770b 107
evanso 82:3211b31e9421 108 // Timer to stop smart bomb button be accidently pressed twice or spammed
evanso 80:870bc6b4bf08 109 smart_bomb_timer_ = 30;
evanso 80:870bc6b4bf08 110 }
evanso 81:78c461e6770b 111 smart_bomb_timer_--;
evanso 80:870bc6b4bf08 112 }
evanso 80:870bc6b4bf08 113
evanso 82:3211b31e9421 114 void PlayEngine::draw_bullets() {
evanso 82:3211b31e9421 115 // Interates over bullet vectors, moves and draws bullet objects
evanso 80:870bc6b4bf08 116
evanso 80:870bc6b4bf08 117 // Alien bullets
evanso 82:3211b31e9421 118 for (int i = 0; i < alien_bullet_vector.size(); i++) {
evanso 80:870bc6b4bf08 119 alien_bullet_vector[i].draw_alien_bullet(lcd, d_);
evanso 80:870bc6b4bf08 120
evanso 82:3211b31e9421 121 // Deletes alien bullet object after bullet has moved set distance
evanso 82:3211b31e9421 122 if(alien_bullet_vector[i].get_bullet_delete_counter() >> 5) {
evanso 80:870bc6b4bf08 123 alien_bullet_vector.erase(alien_bullet_vector.begin()+ i);
evanso 80:870bc6b4bf08 124 }
evanso 80:870bc6b4bf08 125
evanso 80:870bc6b4bf08 126 // Deletes bullet and shpaceship if collision detected
evanso 80:870bc6b4bf08 127 if (spaceship.check_collision(alien_bullet_vector[i]) &&
evanso 82:3211b31e9421 128 !spaceship_destroyed_ ) {
evanso 80:870bc6b4bf08 129 create_explosion(spaceship.get_pos());
evanso 80:870bc6b4bf08 130 spaceship_destroyed_ = true;
evanso 80:870bc6b4bf08 131 alien_bullet_vector.erase(alien_bullet_vector.begin()+ i);
evanso 80:870bc6b4bf08 132 }
evanso 80:870bc6b4bf08 133 }
evanso 80:870bc6b4bf08 134
evanso 80:870bc6b4bf08 135 // Spaceship bullets
evanso 82:3211b31e9421 136 for (int i = 0; i < bullet_vector.size(); i++) {
evanso 80:870bc6b4bf08 137 bullet_vector[i].draw_bullet(lcd);
evanso 80:870bc6b4bf08 138
evanso 82:3211b31e9421 139 // Deletes bullet object after bullet has moved set distance
evanso 82:3211b31e9421 140 if(bullet_vector[i].get_bullet_delete_counter() >> 5) {
evanso 80:870bc6b4bf08 141 bullet_vector.erase(bullet_vector.begin()+ i);
evanso 80:870bc6b4bf08 142 }
evanso 80:870bc6b4bf08 143 }
evanso 80:870bc6b4bf08 144 }
evanso 80:870bc6b4bf08 145
evanso 80:870bc6b4bf08 146
evanso 80:870bc6b4bf08 147
evanso 80:870bc6b4bf08 148
evanso 82:3211b31e9421 149 // Alien Control ---------------------------------------------------------------
evanso 80:870bc6b4bf08 150
evanso 82:3211b31e9421 151 void PlayEngine::spawn_aliens() {
evanso 82:3211b31e9421 152 if(alien_vector.size() <= alien_number_) {
evanso 80:870bc6b4bf08 153 create_alien();
evanso 80:870bc6b4bf08 154 }
evanso 80:870bc6b4bf08 155
evanso 82:3211b31e9421 156 // printf( " alien_number_counter_ = %d\n",alien_number_counter_);
evanso 80:870bc6b4bf08 157
evanso 82:3211b31e9421 158 // Slowley incresing the alien counter as game goes on to make harder
evanso 82:3211b31e9421 159 if(spawn_alien_counter_%(500*spawn_time_multipler_) == 0) {
evanso 80:870bc6b4bf08 160 alien_number_++;
evanso 80:870bc6b4bf08 161 spawn_time_multipler_++;
evanso 80:870bc6b4bf08 162 }
evanso 80:870bc6b4bf08 163
evanso 80:870bc6b4bf08 164 spawn_alien_counter_++;
evanso 80:870bc6b4bf08 165 }
evanso 80:870bc6b4bf08 166
evanso 82:3211b31e9421 167 void PlayEngine::create_alien() {
evanso 80:870bc6b4bf08 168 int position_x_start = 0;
evanso 80:870bc6b4bf08 169
evanso 80:870bc6b4bf08 170 // Alien object
evanso 80:870bc6b4bf08 171 Alien new_alien;
evanso 80:870bc6b4bf08 172
evanso 82:3211b31e9421 173 // Spawns aliens between x > 84 and x <0
evanso 82:3211b31e9421 174 if(rand() % 2) {
evanso 80:870bc6b4bf08 175 position_x_start = rand() % 84 + 84;
evanso 80:870bc6b4bf08 176 }else{
evanso 80:870bc6b4bf08 177 position_x_start =rand() % 83 - 84;
evanso 80:870bc6b4bf08 178 }
evanso 80:870bc6b4bf08 179 new_alien.init(pad, position_x_start, (rand() % 33 + 9));
evanso 80:870bc6b4bf08 180
evanso 80:870bc6b4bf08 181 // Stores alien object in vector
evanso 80:870bc6b4bf08 182 alien_vector.push_back(new_alien);
evanso 80:870bc6b4bf08 183 }
evanso 80:870bc6b4bf08 184
evanso 82:3211b31e9421 185 void PlayEngine::check_alien_people_collision(int i) {
evanso 82:3211b31e9421 186 // Only a collision if all three of theses conditions are met:
evanso 82:3211b31e9421 187 // Checks all these codition for every alien to every person
evanso 80:870bc6b4bf08 188 // 1)person hasn't already had a collision
evanso 80:870bc6b4bf08 189 // 2)There is an acutaual collision of people and alien
evanso 82:3211b31e9421 190 for (int x = 0; x < people_vector.size(); x++) {
evanso 80:870bc6b4bf08 191 if (!people_vector[x].get_alien_collision_flag() &&
evanso 82:3211b31e9421 192 people_vector[x].check_alien_collision(alien_vector[i])) {
evanso 80:870bc6b4bf08 193 alien_vector[i].set_collision_people_element(x);
evanso 80:870bc6b4bf08 194 }
evanso 80:870bc6b4bf08 195 }
evanso 80:870bc6b4bf08 196
evanso 82:3211b31e9421 197 // Draws collision if detected
evanso 82:3211b31e9421 198 if(alien_vector[i].get_collision_people_element() > -1) {
evanso 80:870bc6b4bf08 199 alien_vector[i].draw_alien(lcd,spaceship.get_pos(),d_,
evanso 80:870bc6b4bf08 200 map.get_length_map(), map.get_position_x_map(),true);
evanso 80:870bc6b4bf08 201 }else{
evanso 80:870bc6b4bf08 202 alien_vector[i].draw_alien(lcd,spaceship.get_pos(),d_,
evanso 80:870bc6b4bf08 203 map.get_length_map(), map.get_position_x_map(),false);
evanso 80:870bc6b4bf08 204 }
evanso 80:870bc6b4bf08 205 }
evanso 80:870bc6b4bf08 206
evanso 82:3211b31e9421 207 void PlayEngine::alliens_fire_bullets(int i) {
evanso 82:3211b31e9421 208 if (alien_vector[i].get_alien_fire_counter()%60 == 0) {
evanso 80:870bc6b4bf08 209 Weapons alien_bullet;
evanso 80:870bc6b4bf08 210
evanso 82:3211b31e9421 211 // Fires bullet towards direction of spaceship
evanso 80:870bc6b4bf08 212 bool alien_bullet_direction = false;
evanso 80:870bc6b4bf08 213 Vector2D spaceship_pos = spaceship.get_pos();
evanso 80:870bc6b4bf08 214 Vector2D alien_pos = alien_vector[i].get_pos();
evanso 82:3211b31e9421 215 if(spaceship_pos.x > alien_pos.x) {
evanso 80:870bc6b4bf08 216 alien_bullet_direction = true;
evanso 80:870bc6b4bf08 217 }
evanso 80:870bc6b4bf08 218
evanso 80:870bc6b4bf08 219 alien_bullet.init(alien_vector[i].get_pos(),
evanso 80:870bc6b4bf08 220 alien_bullet_direction , false);
evanso 80:870bc6b4bf08 221
evanso 80:870bc6b4bf08 222 // Stores bullet object in vector
evanso 80:870bc6b4bf08 223 alien_bullet_vector.push_back(alien_bullet);
evanso 80:870bc6b4bf08 224 }
evanso 80:870bc6b4bf08 225 }
evanso 80:870bc6b4bf08 226
evanso 82:3211b31e9421 227 void PlayEngine::delete_aliens(int i) {
evanso 82:3211b31e9421 228 for (int x = 0; x < bullet_vector.size(); x++) {
evanso 82:3211b31e9421 229 if (alien_vector[i].check_collision(bullet_vector[x])) {
evanso 80:870bc6b4bf08 230 create_explosion(alien_vector[i].get_pos());
evanso 80:870bc6b4bf08 231 bullet_vector.erase(bullet_vector.begin()+ x);
evanso 80:870bc6b4bf08 232 alien_vector.erase(alien_vector.begin()+ i);
evanso 80:870bc6b4bf08 233 points_ ++;
evanso 80:870bc6b4bf08 234 }
evanso 81:78c461e6770b 235
evanso 82:3211b31e9421 236 // Delete person object if was carried by destroyed alien
evanso 82:3211b31e9421 237 if(alien_vector[i].get_collision_people_element() > -1) {
evanso 81:78c461e6770b 238 people_vector.erase(people_vector.begin() +
evanso 81:78c461e6770b 239 alien_vector[i].get_collision_people_element());
evanso 81:78c461e6770b 240 }
evanso 80:870bc6b4bf08 241 }
evanso 80:870bc6b4bf08 242 }
evanso 80:870bc6b4bf08 243
evanso 82:3211b31e9421 244 void PlayEngine::draw_aliens() {
evanso 82:3211b31e9421 245 // Interates over alien vector and draws each new_alien object
evanso 82:3211b31e9421 246 for (int i = 0; i < alien_vector.size(); i++) {
evanso 80:870bc6b4bf08 247
evanso 80:870bc6b4bf08 248 check_alien_people_collision(i);
evanso 80:870bc6b4bf08 249
evanso 82:3211b31e9421 250 // Deleted spaceship if alien ship touches spaceship
evanso 80:870bc6b4bf08 251 if (spaceship.check_alien_collision(alien_vector[i]) &&
evanso 82:3211b31e9421 252 !spaceship_destroyed_) {
evanso 80:870bc6b4bf08 253 create_explosion(spaceship.get_pos());
evanso 80:870bc6b4bf08 254 spaceship_destroyed_ = true;
evanso 80:870bc6b4bf08 255 }
evanso 80:870bc6b4bf08 256
evanso 80:870bc6b4bf08 257 alliens_fire_bullets(i);
evanso 80:870bc6b4bf08 258
evanso 80:870bc6b4bf08 259 delete_aliens(i);
evanso 80:870bc6b4bf08 260 }
evanso 80:870bc6b4bf08 261 }
evanso 80:870bc6b4bf08 262
evanso 80:870bc6b4bf08 263
evanso 80:870bc6b4bf08 264
evanso 80:870bc6b4bf08 265
evanso 82:3211b31e9421 266 // Explotion Control -----------------------------------------------------------
evanso 80:870bc6b4bf08 267
evanso 82:3211b31e9421 268 void PlayEngine::create_explosion(Vector2D destroyed_position) {
evanso 82:3211b31e9421 269 // Explosion object
evanso 80:870bc6b4bf08 270 Explosion new_explosion;
evanso 80:870bc6b4bf08 271
evanso 80:870bc6b4bf08 272 new_explosion.init(destroyed_position);
evanso 80:870bc6b4bf08 273
evanso 80:870bc6b4bf08 274 // Stores explosion object in vector
evanso 80:870bc6b4bf08 275 explosion_vector.push_back(new_explosion);
evanso 80:870bc6b4bf08 276
evanso 80:870bc6b4bf08 277
evanso 82:3211b31e9421 278 // Plays explosion sound if sound fx on
evanso 82:3211b31e9421 279 if (sound_fx_ == on) {
evanso 80:870bc6b4bf08 280 pad.tone(40,0.1);
evanso 81:78c461e6770b 281 }
evanso 80:870bc6b4bf08 282 }
evanso 80:870bc6b4bf08 283
evanso 82:3211b31e9421 284 void PlayEngine::draw_explosions() {
evanso 82:3211b31e9421 285 // Interates over expoltion vector and draws each explosion object then
evanso 80:870bc6b4bf08 286 // deleted object after set size
evanso 82:3211b31e9421 287 for (int i = 0; i < explosion_vector.size(); i++) {
evanso 80:870bc6b4bf08 288 explosion_vector[i].draw_explosion(lcd);
evanso 80:870bc6b4bf08 289
evanso 82:3211b31e9421 290 // Delete explosion after reaches set size
evanso 82:3211b31e9421 291 if(explosion_vector[i].get_explosion_radius() == 8) {
evanso 80:870bc6b4bf08 292 explosion_vector.erase(explosion_vector.begin()+ i);
evanso 80:870bc6b4bf08 293 }
evanso 80:870bc6b4bf08 294 }
evanso 80:870bc6b4bf08 295 }
evanso 80:870bc6b4bf08 296
evanso 80:870bc6b4bf08 297
evanso 80:870bc6b4bf08 298
evanso 80:870bc6b4bf08 299
evanso 82:3211b31e9421 300 // People Control --------------------------------------------------------------
evanso 80:870bc6b4bf08 301
evanso 82:3211b31e9421 302 void PlayEngine::spawn_people() {
evanso 80:870bc6b4bf08 303 // Keeps number of people objects constant as people objecs are erased
evanso 82:3211b31e9421 304 if(people_vector.size() <= 5) {
evanso 80:870bc6b4bf08 305 create_people();
evanso 80:870bc6b4bf08 306 }
evanso 80:870bc6b4bf08 307 }
evanso 80:870bc6b4bf08 308
evanso 82:3211b31e9421 309 void PlayEngine::create_people() {
evanso 80:870bc6b4bf08 310 // People object
evanso 80:870bc6b4bf08 311 People people;
evanso 80:870bc6b4bf08 312
evanso 80:870bc6b4bf08 313 people.init(pad, (rand() % 168 - 84));
evanso 80:870bc6b4bf08 314
evanso 80:870bc6b4bf08 315 // Stores alien object in vector
evanso 80:870bc6b4bf08 316 people_vector.push_back(people);
evanso 80:870bc6b4bf08 317 }
evanso 80:870bc6b4bf08 318
evanso 82:3211b31e9421 319 void PlayEngine::draw_people() {
evanso 82:3211b31e9421 320 for (int i = 0; i < people_vector.size(); i++) {
evanso 80:870bc6b4bf08 321 people_vector[i].draw_people(lcd, d_,
evanso 80:870bc6b4bf08 322 map.get_length_map(), map.get_position_x_map());
evanso 80:870bc6b4bf08 323
evanso 82:3211b31e9421 324 // Errase person if at top of screen as captured by alien and alien is
evanso 82:3211b31e9421 325 // set to track mode
evanso 80:870bc6b4bf08 326 Vector2D people_pos = people_vector[i].get_pos();
evanso 80:870bc6b4bf08 327
evanso 82:3211b31e9421 328 for (int x = 0; x < alien_vector.size(); x++) {
evanso 80:870bc6b4bf08 329 Vector2D alien_pos = alien_vector[x].get_pos();
evanso 81:78c461e6770b 330 if(people_pos.y < 30 && alien_pos.y < 9 &&
evanso 82:3211b31e9421 331 alien_vector[x].get_collision_people_element() == i) {
evanso 80:870bc6b4bf08 332
evanso 82:3211b31e9421 333 // Set alien who abducted person to track mode
evanso 81:78c461e6770b 334 alien_vector[x].set_track_flag(true);
evanso 81:78c461e6770b 335 people_vector.erase(people_vector.begin()+ i);
evanso 80:870bc6b4bf08 336 }
evanso 80:870bc6b4bf08 337
evanso 80:870bc6b4bf08 338 }
evanso 80:870bc6b4bf08 339 }
evanso 80:870bc6b4bf08 340 }
evanso 80:870bc6b4bf08 341
evanso 80:870bc6b4bf08 342
evanso 80:870bc6b4bf08 343
evanso 80:870bc6b4bf08 344
evanso 82:3211b31e9421 345 // Map Control------------------------------------------------------------------
evanso 80:870bc6b4bf08 346
evanso 82:3211b31e9421 347 void PlayEngine::reset_map_timer() {
evanso 82:3211b31e9421 348 if(spaceship_destroyed_) {
evanso 81:78c461e6770b 349 reset_map_counter_++;
evanso 81:78c461e6770b 350
evanso 82:3211b31e9421 351 // Stops map movement
evanso 81:78c461e6770b 352 d_ = CENTRE;
evanso 81:78c461e6770b 353
evanso 82:3211b31e9421 354 // Reset map after set time
evanso 82:3211b31e9421 355 if(reset_map_counter_ == 50) {
evanso 81:78c461e6770b 356 reset_map();
evanso 81:78c461e6770b 357 }
evanso 81:78c461e6770b 358 }
evanso 80:870bc6b4bf08 359 }
evanso 80:870bc6b4bf08 360
evanso 82:3211b31e9421 361 void PlayEngine::reset_map() {
evanso 80:870bc6b4bf08 362 // Reassign values to variables
evanso 80:870bc6b4bf08 363 spaceship.init();
evanso 80:870bc6b4bf08 364 spaceship_lives_--;
evanso 80:870bc6b4bf08 365 spaceship_destroyed_ = false;
evanso 80:870bc6b4bf08 366 reset_map_counter_ = 0;
evanso 80:870bc6b4bf08 367
evanso 82:3211b31e9421 368 // Erase aliens so redrawn in random positions when respawning spaceship
evanso 82:3211b31e9421 369 for (int i = (alien_vector.size() - 1); i >= 0 ; i--) {
evanso 80:870bc6b4bf08 370 alien_vector.erase(alien_vector.begin()+ i);
evanso 80:870bc6b4bf08 371 }
evanso 80:870bc6b4bf08 372
evanso 82:3211b31e9421 373 // Erase all people so redrawn at bottom of map
evanso 82:3211b31e9421 374 for (int i = (people_vector.size() - 1); i >= 0 ; i--) {
evanso 80:870bc6b4bf08 375 people_vector.erase(people_vector.begin()+ i);
evanso 80:870bc6b4bf08 376 }
evanso 80:870bc6b4bf08 377
evanso 82:3211b31e9421 378 // Erase all alien bullets
evanso 82:3211b31e9421 379 for (int i = (alien_bullet_vector.size() - 1); i >= 0 ; i--) {
evanso 80:870bc6b4bf08 380 alien_bullet_vector.erase(alien_bullet_vector.begin()+ i);
evanso 80:870bc6b4bf08 381 }
evanso 80:870bc6b4bf08 382 }