Ben Evans University Second Year Project. Game Called Defender.

Dependencies:   mbed

https://os.mbed.com/media/uploads/evanso/84bc1a30759fd6a1e3f1fd1fae3e97c2.png

Hello, soldier, you have been specially selected as the defender of planet earth.

Your mission, if you choose to accept it. Fly around the planet and pulverise invading alien ships for as long as you can. Stop the aliens abducting the innocent people on the ground. Be warned if an alien ship manages to abduct a person and take them to top of the screen, they will no longer move randomly and will begin to hunt you down. This sounds like a challenge you were trained for.

But don’t worry soldier you’re not going into battle empty-handed. Your ship is equipped with a state of the art laser beam that has unlimited ammo and four smart bombs that will destroy anything on the screen. The ship also has three lives so use them wisely.

As time goes on more alien ships will arrive on planet earth increasing the difficulty of your mission. And remember the landscape bellow loops around so if you continually fly in the same direction you go to your original position. Good luck soldier.

Committer:
evanso
Date:
Sat May 16 21:08:54 2020 +0000
Revision:
39:fc5586b930e3
Parent:
36:27aa597db3d2
Child:
40:71f947254fda
Added HUD (heads up display) class wich displays point, lives and smart bombed lefts. The amount of lives also interacts with LED's through a function in GameEngine.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
evanso 8:dd1037c5435b 1 #include "GameEngine.h"
evanso 8:dd1037c5435b 2
evanso 8:dd1037c5435b 3 GameEngine::GameEngine() {
evanso 8:dd1037c5435b 4
evanso 8:dd1037c5435b 5 }
evanso 8:dd1037c5435b 6
evanso 8:dd1037c5435b 7 GameEngine::~GameEngine() {
evanso 8:dd1037c5435b 8
evanso 8:dd1037c5435b 9 }
evanso 8:dd1037c5435b 10
evanso 13:12276eed13ac 11 void GameEngine::init() {
evanso 36:27aa597db3d2 12 // Initalise objects
evanso 8:dd1037c5435b 13 pad.init();
evanso 8:dd1037c5435b 14 lcd.init();
evanso 8:dd1037c5435b 15 spaceship.init();
evanso 13:12276eed13ac 16 map.init(pad);
evanso 36:27aa597db3d2 17
evanso 36:27aa597db3d2 18 // Set seed value
evanso 36:27aa597db3d2 19 srand(pad.read_adc()*64000);
evanso 36:27aa597db3d2 20
evanso 36:27aa597db3d2 21 // Assign values to variables
evanso 33:7fedd8029473 22 spawn_alien_rate = 250;
evanso 34:85ccc16f24d2 23 alien_number_counter = 3;
evanso 33:7fedd8029473 24 spawn_alien_counter = 0;
evanso 30:814674b189f0 25 spaceship_lives = 3;
evanso 30:814674b189f0 26 spaceship_destroyed = false;
evanso 30:814674b189f0 27 reset_map_counter = 0;
evanso 39:fc5586b930e3 28 smart_bomb_counter = 4;
evanso 33:7fedd8029473 29 create_people();
evanso 39:fc5586b930e3 30 points = 0;
evanso 39:fc5586b930e3 31 smart_bomb_timer = 0;
evanso 39:fc5586b930e3 32 bullet_timer = 0;
evanso 8:dd1037c5435b 33 }
evanso 8:dd1037c5435b 34
evanso 13:12276eed13ac 35 void GameEngine::gameplay_loop() {
evanso 30:814674b189f0 36 // clear screen and set contrast
evanso 13:12276eed13ac 37 lcd.setContrast(pad.read_pot1());
evanso 8:dd1037c5435b 38 lcd.clear();
evanso 11:ab578a151f67 39
evanso 33:7fedd8029473 40 // creat objects
evanso 36:27aa597db3d2 41 create_weapons_bullets();
evanso 36:27aa597db3d2 42 create_weapons_smart_bomb();
evanso 32:c006a9882778 43 spawn_aliens();
evanso 34:85ccc16f24d2 44 spawn_people();
evanso 19:1bc0a2d22054 45
evanso 36:27aa597db3d2 46 //If spaceship is destroyed stop joystick input, dont draw spaceship sprite
evanso 30:814674b189f0 47 if (!spaceship_destroyed){
evanso 33:7fedd8029473 48 read_joystick_direction();
evanso 33:7fedd8029473 49 spaceship.movement(d_);
evanso 30:814674b189f0 50 spaceship.draw(lcd);
evanso 30:814674b189f0 51 }
evanso 33:7fedd8029473 52
evanso 33:7fedd8029473 53 // Draws objects
evanso 18:11068b98e261 54 map.draw_map(lcd, d_);
evanso 20:febd920ec29e 55 draw_aliens();
evanso 19:1bc0a2d22054 56 draw_bullets();
evanso 33:7fedd8029473 57 draw_explosions();
evanso 33:7fedd8029473 58 draw_people();
evanso 39:fc5586b930e3 59 hud.draw_HUD(lcd, spaceship_lives, points, smart_bomb_counter);
evanso 39:fc5586b930e3 60 spaceship_lives_leds();
evanso 30:814674b189f0 61
evanso 36:27aa597db3d2 62 reset_map_timer();
evanso 30:814674b189f0 63
evanso 18:11068b98e261 64 // refresh's screen
evanso 18:11068b98e261 65 lcd.refresh();
evanso 13:12276eed13ac 66 }
evanso 13:12276eed13ac 67
evanso 39:fc5586b930e3 68 //Spaceship control ------------------------------------------------------------
evanso 39:fc5586b930e3 69
evanso 15:90b6821bcf64 70 void GameEngine::read_joystick_direction(){
evanso 13:12276eed13ac 71 d_ = pad.get_direction();
evanso 18:11068b98e261 72 }
evanso 18:11068b98e261 73
evanso 39:fc5586b930e3 74 void GameEngine::spaceship_lives_leds(){
evanso 39:fc5586b930e3 75 pad.leds_off();
evanso 39:fc5586b930e3 76
evanso 39:fc5586b930e3 77 //top two red leds on if 1 lives left
evanso 39:fc5586b930e3 78 if(spaceship_lives >= 1){
evanso 39:fc5586b930e3 79 pad.led(1,1);
evanso 39:fc5586b930e3 80 pad.led(4,1);
evanso 39:fc5586b930e3 81 }
evanso 39:fc5586b930e3 82
evanso 39:fc5586b930e3 83 //middle two orange leds also on if 2 lives left
evanso 39:fc5586b930e3 84 if(spaceship_lives >= 2){
evanso 39:fc5586b930e3 85 pad.led(2,1);
evanso 39:fc5586b930e3 86 pad.led(5,1);
evanso 39:fc5586b930e3 87 }
evanso 39:fc5586b930e3 88
evanso 39:fc5586b930e3 89 //bottom two red leds also on if 3 lives left
evanso 39:fc5586b930e3 90 if(spaceship_lives == 3){
evanso 39:fc5586b930e3 91 pad.led(3,1);
evanso 39:fc5586b930e3 92 pad.led(6,1);
evanso 39:fc5586b930e3 93 }
evanso 39:fc5586b930e3 94 }
evanso 39:fc5586b930e3 95
evanso 36:27aa597db3d2 96 //Weapon control ---------------------------------------------------------------
evanso 36:27aa597db3d2 97
evanso 36:27aa597db3d2 98 void GameEngine::create_weapons_bullets(){
evanso 39:fc5586b930e3 99 // controlls speed that bullet can be fired
evanso 39:fc5586b930e3 100 if(bullet_timer <=0){
evanso 39:fc5586b930e3 101 if (pad.A_pressed()){
evanso 36:27aa597db3d2 102 // Bullet object
evanso 36:27aa597db3d2 103 Weapons new_bullet;
evanso 36:27aa597db3d2 104
evanso 36:27aa597db3d2 105 new_bullet.init(spaceship.get_pos(),
evanso 36:27aa597db3d2 106 spaceship.get_spaceship_sprite_direction(), true);
evanso 36:27aa597db3d2 107
evanso 36:27aa597db3d2 108 // Stores bullet object in vector
evanso 36:27aa597db3d2 109 bullet_vector.push_back(new_bullet);
evanso 39:fc5586b930e3 110 }
evanso 39:fc5586b930e3 111 bullet_timer = 5;
evanso 39:fc5586b930e3 112 }
evanso 39:fc5586b930e3 113 bullet_timer--;
evanso 36:27aa597db3d2 114 }
evanso 36:27aa597db3d2 115
evanso 36:27aa597db3d2 116 void GameEngine::create_weapons_smart_bomb(){
evanso 39:fc5586b930e3 117 // timer to stop smart bomb button be accidently pressed twice
evanso 39:fc5586b930e3 118 if(smart_bomb_timer <=0){
evanso 39:fc5586b930e3 119 if (pad.B_pressed() && smart_bomb_counter > 0){
evanso 39:fc5586b930e3 120 weapons.smart_bomb(lcd);
evanso 39:fc5586b930e3 121 smart_bomb_counter--;
evanso 39:fc5586b930e3 122
evanso 39:fc5586b930e3 123 //Deletes alien object if on screen
evanso 39:fc5586b930e3 124 for (int i = (alien_vector.size() -1) ; i >= 0 ; i--){
evanso 39:fc5586b930e3 125 Vector2D alien_pos = alien_vector[i].get_pos();
evanso 36:27aa597db3d2 126
evanso 39:fc5586b930e3 127 // Creats explosion if alien was on the screen
evanso 39:fc5586b930e3 128 if(alien_pos.x <= 84 && alien_pos.x >= -6){
evanso 39:fc5586b930e3 129 create_explosion(alien_pos);
evanso 39:fc5586b930e3 130
evanso 39:fc5586b930e3 131 //delete person object if was being abducted by destroyed alien
evanso 39:fc5586b930e3 132 if(alien_vector[i].get_collision_people_element() > -1){
evanso 39:fc5586b930e3 133 people_vector.erase(people_vector.begin() +
evanso 39:fc5586b930e3 134 alien_vector[i].get_collision_people_element());
evanso 39:fc5586b930e3 135 }
evanso 39:fc5586b930e3 136
evanso 39:fc5586b930e3 137 alien_vector.erase(alien_vector.begin()+ i);
evanso 39:fc5586b930e3 138 points ++;
evanso 39:fc5586b930e3 139 }
evanso 36:27aa597db3d2 140 }
evanso 39:fc5586b930e3 141 smart_bomb_timer = 30;
evanso 39:fc5586b930e3 142 }
evanso 39:fc5586b930e3 143 }
evanso 39:fc5586b930e3 144 smart_bomb_timer--;
evanso 36:27aa597db3d2 145 }
evanso 36:27aa597db3d2 146
evanso 36:27aa597db3d2 147 void GameEngine::draw_bullets(){
evanso 36:27aa597db3d2 148 // interates over bullet vectors, moves and draws bullet objects
evanso 36:27aa597db3d2 149
evanso 36:27aa597db3d2 150 // Alien bullets
evanso 36:27aa597db3d2 151 for (int i = 0; i < alien_bullet_vector.size(); i++){
evanso 36:27aa597db3d2 152 alien_bullet_vector[i].draw_alien_bullet(lcd, d_);
evanso 36:27aa597db3d2 153
evanso 36:27aa597db3d2 154 // deletes alien bullet object after bullet has moved set distance
evanso 36:27aa597db3d2 155 if(alien_bullet_vector[i].get_bullet_delete_counter() >> 5){
evanso 36:27aa597db3d2 156 alien_bullet_vector.erase(alien_bullet_vector.begin()+ i);
evanso 36:27aa597db3d2 157 }
evanso 36:27aa597db3d2 158
evanso 36:27aa597db3d2 159 // Deletes bullet and shpaceship if collision detected
evanso 36:27aa597db3d2 160 if (spaceship.check_collision(alien_bullet_vector[i]) &&
evanso 36:27aa597db3d2 161 !spaceship_destroyed ){
evanso 36:27aa597db3d2 162 create_explosion(spaceship.get_pos());
evanso 36:27aa597db3d2 163
evanso 36:27aa597db3d2 164 spaceship_destroyed = true;
evanso 36:27aa597db3d2 165 alien_bullet_vector.erase(alien_bullet_vector.begin()+ i);
evanso 36:27aa597db3d2 166 }
evanso 36:27aa597db3d2 167 }
evanso 36:27aa597db3d2 168
evanso 36:27aa597db3d2 169 // Spaceship bullets
evanso 36:27aa597db3d2 170 for (int i = 0; i < bullet_vector.size(); i++){
evanso 36:27aa597db3d2 171 bullet_vector[i].draw_bullet(lcd);
evanso 36:27aa597db3d2 172
evanso 36:27aa597db3d2 173 // deletes bullet object after bullet has moved set distance
evanso 36:27aa597db3d2 174 if(bullet_vector[i].get_bullet_delete_counter() >> 5){
evanso 36:27aa597db3d2 175 bullet_vector.erase(bullet_vector.begin()+ i);
evanso 36:27aa597db3d2 176 }
evanso 36:27aa597db3d2 177 }
evanso 36:27aa597db3d2 178 }
evanso 36:27aa597db3d2 179
evanso 36:27aa597db3d2 180
evanso 36:27aa597db3d2 181
evanso 36:27aa597db3d2 182 //Alien Control ----------------------------------------------------------------
evanso 36:27aa597db3d2 183
evanso 32:c006a9882778 184 void GameEngine::spawn_aliens(){
evanso 34:85ccc16f24d2 185 if(alien_vector.size() <= alien_number_counter){
evanso 34:85ccc16f24d2 186 create_alien();
evanso 32:c006a9882778 187 }
evanso 32:c006a9882778 188
evanso 34:85ccc16f24d2 189 //slowley incresing the alien counter as game goes on to make harder
evanso 34:85ccc16f24d2 190 //int rounded_spawn_rate = floor(spawn_alien_rate);
evanso 34:85ccc16f24d2 191 if(spawn_alien_counter%750 == 0){
evanso 34:85ccc16f24d2 192 //alien_number_counter++;
evanso 32:c006a9882778 193 }
evanso 34:85ccc16f24d2 194
evanso 33:7fedd8029473 195 spawn_alien_counter++;
evanso 32:c006a9882778 196 }
evanso 32:c006a9882778 197
evanso 36:27aa597db3d2 198 void GameEngine::create_alien(){
evanso 36:27aa597db3d2 199 int position_x_start = 0;
evanso 36:27aa597db3d2 200
evanso 36:27aa597db3d2 201 // Alien object
evanso 36:27aa597db3d2 202 Alien new_alien;
evanso 36:27aa597db3d2 203
evanso 36:27aa597db3d2 204 //spawns aliens between x > 84 and x <0
evanso 36:27aa597db3d2 205 if(rand() % 2){
evanso 36:27aa597db3d2 206 position_x_start = rand() % 84 + 84;
evanso 36:27aa597db3d2 207 }else{
evanso 36:27aa597db3d2 208 position_x_start =rand() % 83 - 84;
evanso 36:27aa597db3d2 209 }
evanso 39:fc5586b930e3 210 new_alien.init(pad, position_x_start, (rand() % 33 + 9));
evanso 36:27aa597db3d2 211
evanso 36:27aa597db3d2 212 // Stores alien object in vector
evanso 36:27aa597db3d2 213 alien_vector.push_back(new_alien);
evanso 36:27aa597db3d2 214 }
evanso 36:27aa597db3d2 215
evanso 36:27aa597db3d2 216 void GameEngine::check_alien_people_collision(int i){
evanso 36:27aa597db3d2 217 for (int x = 0; x < people_vector.size(); x++){
evanso 36:27aa597db3d2 218 if (!people_vector[x].get_alien_collision_flag() &&
evanso 36:27aa597db3d2 219 people_vector[x].check_alien_collision(alien_vector[i])){
evanso 36:27aa597db3d2 220 alien_vector[i].set_collision_people_element(x);
evanso 36:27aa597db3d2 221 }
evanso 36:27aa597db3d2 222 }
evanso 36:27aa597db3d2 223
evanso 36:27aa597db3d2 224 //draws collision if detected
evanso 36:27aa597db3d2 225 if(alien_vector[i].get_collision_people_element() > -1){
evanso 36:27aa597db3d2 226 alien_vector[i].draw_alien(lcd,spaceship.get_pos(),d_,
evanso 36:27aa597db3d2 227 map.get_length_map(), map.get_position_x_map(),true);
evanso 36:27aa597db3d2 228 }else{
evanso 36:27aa597db3d2 229 alien_vector[i].draw_alien(lcd,spaceship.get_pos(),d_,
evanso 36:27aa597db3d2 230 map.get_length_map(), map.get_position_x_map(),false);
evanso 36:27aa597db3d2 231 }
evanso 36:27aa597db3d2 232 }
evanso 36:27aa597db3d2 233
evanso 36:27aa597db3d2 234 void GameEngine::alliens_fire_bullets(int i){
evanso 36:27aa597db3d2 235 if (alien_vector[i].get_alien_fire_counter()%60 == 0){
evanso 36:27aa597db3d2 236 Weapons alien_bullet;
evanso 36:27aa597db3d2 237
evanso 36:27aa597db3d2 238 // fires bullet towards direction of spaceship
evanso 36:27aa597db3d2 239 bool alien_bullet_direction = false;
evanso 36:27aa597db3d2 240 Vector2D spaceship_pos = spaceship.get_pos();
evanso 36:27aa597db3d2 241 Vector2D alien_pos = alien_vector[i].get_pos();
evanso 36:27aa597db3d2 242 if(spaceship_pos.x > alien_pos.x){
evanso 36:27aa597db3d2 243 alien_bullet_direction = true;
evanso 36:27aa597db3d2 244 }
evanso 36:27aa597db3d2 245
evanso 36:27aa597db3d2 246 alien_bullet.init(alien_vector[i].get_pos(),
evanso 36:27aa597db3d2 247 alien_bullet_direction , false);
evanso 36:27aa597db3d2 248
evanso 36:27aa597db3d2 249 // Stores bullet object in vector
evanso 36:27aa597db3d2 250 alien_bullet_vector.push_back(alien_bullet);
evanso 36:27aa597db3d2 251 }
evanso 36:27aa597db3d2 252 }
evanso 36:27aa597db3d2 253
evanso 36:27aa597db3d2 254 void GameEngine::delete_aliens(int i){
evanso 36:27aa597db3d2 255 for (int x = 0; x < bullet_vector.size(); x++){
evanso 36:27aa597db3d2 256 if (alien_vector[i].check_collision(bullet_vector[x])){
evanso 36:27aa597db3d2 257 create_explosion(alien_vector[i].get_pos());
evanso 36:27aa597db3d2 258
evanso 36:27aa597db3d2 259 //delete person object if was carried by destroyed alien
evanso 36:27aa597db3d2 260 if(alien_vector[i].get_collision_people_element() > -1){
evanso 36:27aa597db3d2 261 people_vector.erase(people_vector.begin() +
evanso 36:27aa597db3d2 262 alien_vector[i].get_collision_people_element());
evanso 36:27aa597db3d2 263 }
evanso 36:27aa597db3d2 264
evanso 39:fc5586b930e3 265 bullet_vector.erase(bullet_vector.begin()+ x);
evanso 39:fc5586b930e3 266 alien_vector.erase(alien_vector.begin()+ i);
evanso 39:fc5586b930e3 267 points ++;
evanso 36:27aa597db3d2 268 }
evanso 36:27aa597db3d2 269 }
evanso 36:27aa597db3d2 270 }
evanso 36:27aa597db3d2 271
evanso 36:27aa597db3d2 272 void GameEngine::draw_aliens(){
evanso 36:27aa597db3d2 273 // interates over alien vector and draws each new_alien object
evanso 36:27aa597db3d2 274 for (int i = 0; i < alien_vector.size(); i++){
evanso 36:27aa597db3d2 275
evanso 36:27aa597db3d2 276 check_alien_people_collision(i);
evanso 36:27aa597db3d2 277
evanso 36:27aa597db3d2 278 // deleted spaceship if alien ship touches spaceship
evanso 36:27aa597db3d2 279 if (spaceship.check_alien_collision(alien_vector[i]) &&
evanso 36:27aa597db3d2 280 !spaceship_destroyed){
evanso 36:27aa597db3d2 281 create_explosion(spaceship.get_pos());
evanso 36:27aa597db3d2 282 spaceship_destroyed = true;
evanso 36:27aa597db3d2 283 }
evanso 36:27aa597db3d2 284
evanso 36:27aa597db3d2 285 alliens_fire_bullets(i);
evanso 36:27aa597db3d2 286
evanso 36:27aa597db3d2 287 delete_aliens(i);
evanso 34:85ccc16f24d2 288 }
evanso 34:85ccc16f24d2 289 }
evanso 34:85ccc16f24d2 290
evanso 36:27aa597db3d2 291
evanso 36:27aa597db3d2 292
evanso 36:27aa597db3d2 293 //Explotion Control ------------------------------------------------------------
evanso 36:27aa597db3d2 294
evanso 36:27aa597db3d2 295 void GameEngine::create_explosion(Vector2D destroyed_position){
evanso 36:27aa597db3d2 296 // explosion object
evanso 36:27aa597db3d2 297 Explosion new_explosion;
evanso 36:27aa597db3d2 298
evanso 36:27aa597db3d2 299 new_explosion.init(destroyed_position);
evanso 33:7fedd8029473 300
evanso 36:27aa597db3d2 301 // Stores explosion object in vector
evanso 36:27aa597db3d2 302 explosion_vector.push_back(new_explosion);
evanso 36:27aa597db3d2 303 }
evanso 36:27aa597db3d2 304
evanso 36:27aa597db3d2 305 void GameEngine::draw_explosions(){
evanso 36:27aa597db3d2 306 // interates over expoltion vector and draws each explosion object then
evanso 36:27aa597db3d2 307 // deleted object after set size
evanso 36:27aa597db3d2 308 for (int i = 0; i < explosion_vector.size(); i++){
evanso 36:27aa597db3d2 309 explosion_vector[i].draw_explosion(lcd);
evanso 31:6015e8ed859c 310
evanso 36:27aa597db3d2 311 // delete explosion after reaches set size
evanso 36:27aa597db3d2 312 if(explosion_vector[i].get_explosion_radius() == 8){
evanso 36:27aa597db3d2 313 explosion_vector.erase(explosion_vector.begin()+ i);
evanso 31:6015e8ed859c 314 }
evanso 36:27aa597db3d2 315 }
evanso 36:27aa597db3d2 316 }
evanso 36:27aa597db3d2 317
evanso 36:27aa597db3d2 318
evanso 36:27aa597db3d2 319
evanso 36:27aa597db3d2 320 //People Control ---------------------------------------------------------------
evanso 36:27aa597db3d2 321
evanso 36:27aa597db3d2 322 void GameEngine::spawn_people(){
evanso 36:27aa597db3d2 323 // Keeps number of people objects constant as people objecs are erased
evanso 36:27aa597db3d2 324 if(people_vector.size() <= 5){
evanso 36:27aa597db3d2 325 create_people();
evanso 31:6015e8ed859c 326 }
evanso 20:febd920ec29e 327 }
evanso 20:febd920ec29e 328
evanso 33:7fedd8029473 329 void GameEngine::create_people(){
evanso 33:7fedd8029473 330 // People object
evanso 33:7fedd8029473 331 People people;
evanso 33:7fedd8029473 332
evanso 33:7fedd8029473 333 people.init(pad, (rand() % 168 - 84));
evanso 33:7fedd8029473 334
evanso 33:7fedd8029473 335 // Stores alien object in vector
evanso 33:7fedd8029473 336 people_vector.push_back(people);
evanso 33:7fedd8029473 337 }
evanso 33:7fedd8029473 338
evanso 33:7fedd8029473 339 void GameEngine::draw_people(){
evanso 33:7fedd8029473 340 for (int i = 0; i < people_vector.size(); i++){
evanso 34:85ccc16f24d2 341 people_vector[i].draw_people(lcd, d_,
evanso 34:85ccc16f24d2 342 map.get_length_map(), map.get_position_x_map());
evanso 34:85ccc16f24d2 343
evanso 34:85ccc16f24d2 344 //errase person if at top of screen as captured by alien and alien is
evanso 34:85ccc16f24d2 345 //set to track mode
evanso 34:85ccc16f24d2 346 Vector2D people_pos = people_vector[i].get_pos();
evanso 39:fc5586b930e3 347 if(people_pos.y <= 9){
evanso 34:85ccc16f24d2 348 for (int x = 0; x < alien_vector.size(); x++){
evanso 34:85ccc16f24d2 349 if(alien_vector[x].get_collision_people_element() == i){
evanso 34:85ccc16f24d2 350 alien_vector[x].set_track_flag(true);
evanso 34:85ccc16f24d2 351 }
evanso 34:85ccc16f24d2 352 }
evanso 34:85ccc16f24d2 353 people_vector.erase(people_vector.begin()+ i);
evanso 34:85ccc16f24d2 354
evanso 34:85ccc16f24d2 355 }
evanso 33:7fedd8029473 356 }
evanso 33:7fedd8029473 357 }
evanso 33:7fedd8029473 358
evanso 19:1bc0a2d22054 359
evanso 25:70b55f5bfc87 360
evanso 36:27aa597db3d2 361 //Map Control-------------------------------------------------------------------
evanso 19:1bc0a2d22054 362
evanso 36:27aa597db3d2 363 void GameEngine::reset_map_timer(){
evanso 36:27aa597db3d2 364 if(spaceship_destroyed){
evanso 36:27aa597db3d2 365 reset_map_counter++;
evanso 36:27aa597db3d2 366
evanso 36:27aa597db3d2 367 // stops map movement
evanso 36:27aa597db3d2 368 d_ = CENTRE;
evanso 36:27aa597db3d2 369
evanso 36:27aa597db3d2 370 // reset map after set time
evanso 36:27aa597db3d2 371 if(reset_map_counter == 50){
evanso 36:27aa597db3d2 372 reset_map();
evanso 25:70b55f5bfc87 373 }
evanso 36:27aa597db3d2 374 }
evanso 25:70b55f5bfc87 375 }
evanso 36:27aa597db3d2 376
evanso 30:814674b189f0 377 void GameEngine::reset_map(){
evanso 36:27aa597db3d2 378 // Reassign values to variables
evanso 30:814674b189f0 379 spaceship.init();
evanso 30:814674b189f0 380 spaceship_lives--;
evanso 30:814674b189f0 381 spaceship_destroyed = false;
evanso 30:814674b189f0 382 reset_map_counter = 0;
evanso 33:7fedd8029473 383
evanso 34:85ccc16f24d2 384 // erase aliens so redrawn in random positions when respawning spaceship
evanso 34:85ccc16f24d2 385 for (int i = (alien_vector.size() - 1); i >= 0 ; i--){
evanso 34:85ccc16f24d2 386 alien_vector.erase(alien_vector.begin()+ i);
evanso 34:85ccc16f24d2 387 }
evanso 36:27aa597db3d2 388
evanso 34:85ccc16f24d2 389 // erase all people so redrawn at bottom of map
evanso 34:85ccc16f24d2 390 for (int i = (people_vector.size() - 1); i >= 0 ; i--){
evanso 34:85ccc16f24d2 391 people_vector.erase(people_vector.begin()+ i);
evanso 34:85ccc16f24d2 392 }
evanso 36:27aa597db3d2 393
evanso 36:27aa597db3d2 394 // erase all alien bullets
evanso 34:85ccc16f24d2 395 for (int i = (alien_bullet_vector.size() - 1); i >= 0 ; i--){
evanso 34:85ccc16f24d2 396 alien_bullet_vector.erase(alien_bullet_vector.begin()+ i);
evanso 33:7fedd8029473 397 }
evanso 20:febd920ec29e 398 }