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:
Fri May 15 16:31:25 2020 +0000
Revision:
36:27aa597db3d2
Parent:
34:85ccc16f24d2
Child:
39:fc5586b930e3
Created Parent Classes folder to hold all of the parent class files. Shortened function lengths in Game Engine class and organised function definitions.

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