ELEC2645 (2019/20) / Mbed 2 deprecated ELEC2645_Project_el18jkeo

Dependencies:   mbed

Committer:
josh_ohara
Date:
Thu May 14 17:35:35 2020 +0000
Revision:
24:ff5af5a013b5
Parent:
23:aa86e32b6a74
Child:
27:eb755a345b1f
Added difficulty selection and difficulty progression with levels. FInishing touches now

Who changed what in which revision?

UserRevisionLine numberNew contents of line
josh_ohara 7:06a2558155f0 1
josh_ohara 7:06a2558155f0 2 #include "SpaceInvaderEngine.h"
josh_ohara 7:06a2558155f0 3
josh_ohara 7:06a2558155f0 4 SpaceInvaderEngine::SpaceInvaderEngine()
josh_ohara 7:06a2558155f0 5 {
josh_ohara 7:06a2558155f0 6
josh_ohara 7:06a2558155f0 7 }
josh_ohara 7:06a2558155f0 8
josh_ohara 8:86cb9a9f8a73 9 SpaceInvaderEngine::~SpaceInvaderEngine()
josh_ohara 8:86cb9a9f8a73 10 {
josh_ohara 8:86cb9a9f8a73 11
josh_ohara 8:86cb9a9f8a73 12 }
josh_ohara 8:86cb9a9f8a73 13
josh_ohara 24:ff5af5a013b5 14 void SpaceInvaderEngine::init(int ship_height, int ship_width, int alien_size, int no_aliens, int armada_column_size, int armada_row_size, int cover_y, int cover1_x, int cover2_x, int cover3_x, int no_rocks, int level) {
josh_ohara 7:06a2558155f0 15
josh_ohara 7:06a2558155f0 16 S1_height = ship_height;
josh_ohara 7:06a2558155f0 17 S1_width = ship_width;
josh_ohara 9:8e695df3cc36 18 A1_size = alien_size;
josh_ohara 8:86cb9a9f8a73 19
josh_ohara 11:c174d84e4866 20 Vector2D ship_pos = S1.get_position();
josh_ohara 14:e88bcf5c0887 21 S1x = ship_pos.x;
josh_ohara 14:e88bcf5c0887 22 S1y = ship_pos.y;
josh_ohara 7:06a2558155f0 23
josh_ohara 12:be491ab6e742 24 N = no_aliens;
josh_ohara 15:dde4ce4bf7fe 25 CS = armada_column_size;
josh_ohara 15:dde4ce4bf7fe 26 RS = armada_row_size;
josh_ohara 15:dde4ce4bf7fe 27
josh_ohara 15:dde4ce4bf7fe 28 Cy = cover_y;
josh_ohara 15:dde4ce4bf7fe 29 C1x = cover1_x;
josh_ohara 15:dde4ce4bf7fe 30 C2x = cover2_x;
josh_ohara 15:dde4ce4bf7fe 31 C3x = cover3_x;
josh_ohara 15:dde4ce4bf7fe 32 NR = no_rocks;
josh_ohara 12:be491ab6e742 33
josh_ohara 24:ff5af5a013b5 34 A1.init(N,A1_size,CS,RS,level);
josh_ohara 7:06a2558155f0 35 S1.init(S1_height,S1_width);
josh_ohara 15:dde4ce4bf7fe 36 C1.init(C1x,Cy,NR);
josh_ohara 15:dde4ce4bf7fe 37 C2.init(C2x,Cy,NR);
josh_ohara 15:dde4ce4bf7fe 38 C3.init(C3x,Cy,NR);
josh_ohara 8:86cb9a9f8a73 39
josh_ohara 7:06a2558155f0 40 }
josh_ohara 7:06a2558155f0 41
josh_ohara 7:06a2558155f0 42 void SpaceInvaderEngine::read_input(Gamepad &pad)
josh_ohara 7:06a2558155f0 43 {
josh_ohara 7:06a2558155f0 44 D = pad.get_direction();
josh_ohara 7:06a2558155f0 45 Mag = pad.get_mag();
josh_ohara 7:06a2558155f0 46 }
josh_ohara 8:86cb9a9f8a73 47
josh_ohara 8:86cb9a9f8a73 48 void SpaceInvaderEngine::render(N5110 &lcd)
josh_ohara 8:86cb9a9f8a73 49 {
josh_ohara 8:86cb9a9f8a73 50 S1.render(lcd);
josh_ohara 9:8e695df3cc36 51 A1.render(lcd);
josh_ohara 15:dde4ce4bf7fe 52 C1.render(lcd);
josh_ohara 15:dde4ce4bf7fe 53 C2.render(lcd);
josh_ohara 15:dde4ce4bf7fe 54 C3.render(lcd);
josh_ohara 8:86cb9a9f8a73 55 }
josh_ohara 8:86cb9a9f8a73 56
josh_ohara 24:ff5af5a013b5 57 void SpaceInvaderEngine::update(Gamepad &pad, N5110 &lcd, int counter, int level)
josh_ohara 14:e88bcf5c0887 58 {
josh_ohara 14:e88bcf5c0887 59 get_ship_pos();
josh_ohara 21:970807533b10 60 S1.update(D,Mag,pad,lcd,counter);
josh_ohara 24:ff5af5a013b5 61 A1.update(pad, counter, level);
josh_ohara 14:e88bcf5c0887 62 ship_bullet_alien_collision(pad, lcd);
josh_ohara 15:dde4ce4bf7fe 63 ship_bullet_cover1_collision(pad, lcd);
josh_ohara 15:dde4ce4bf7fe 64 ship_bullet_cover2_collision(pad, lcd);
josh_ohara 15:dde4ce4bf7fe 65 ship_bullet_cover3_collision(pad, lcd);
josh_ohara 20:0b6f1cfc5be6 66 alien_bullet_ship_collision(pad, lcd);
josh_ohara 20:0b6f1cfc5be6 67 alien_bullet_cover1_collision(pad, lcd);
josh_ohara 20:0b6f1cfc5be6 68 alien_bullet_cover2_collision(pad, lcd);
josh_ohara 20:0b6f1cfc5be6 69 alien_bullet_cover3_collision(pad, lcd);
josh_ohara 21:970807533b10 70 alien_ship_collision(pad, lcd);
josh_ohara 21:970807533b10 71 alien_cover1_collision(pad, lcd);
josh_ohara 21:970807533b10 72 alien_cover2_collision(pad, lcd);
josh_ohara 21:970807533b10 73 alien_cover3_collision(pad, lcd);
josh_ohara 8:86cb9a9f8a73 74 }
josh_ohara 8:86cb9a9f8a73 75
josh_ohara 11:c174d84e4866 76 void SpaceInvaderEngine::get_ship_pos()
josh_ohara 11:c174d84e4866 77 {
josh_ohara 11:c174d84e4866 78 Vector2D ship_pos = S1.get_position();
josh_ohara 14:e88bcf5c0887 79 S1x = ship_pos.x;
josh_ohara 14:e88bcf5c0887 80 S1y = ship_pos.y;
josh_ohara 11:c174d84e4866 81 }
josh_ohara 14:e88bcf5c0887 82
josh_ohara 14:e88bcf5c0887 83 void SpaceInvaderEngine::ship_bullet_alien_collision(Gamepad &pad, N5110 &lcd){
josh_ohara 14:e88bcf5c0887 84 vector<Alien> alien_vector = A1.get_vector();
josh_ohara 21:970807533b10 85 vector<Bullet> bullet_vector = S1.get_bullet_vector();
josh_ohara 14:e88bcf5c0887 86 for(int i = 0; i < alien_vector.size(); i++){
josh_ohara 14:e88bcf5c0887 87 Vector2D alien_position = alien_vector[i].get_position();
josh_ohara 14:e88bcf5c0887 88 int alien_x = alien_position.x;
josh_ohara 14:e88bcf5c0887 89 int alien_y = alien_position.y;
josh_ohara 15:dde4ce4bf7fe 90 bool alien_life = alien_vector[i].get_life();
josh_ohara 14:e88bcf5c0887 91 for (int n = 0; n < bullet_vector.size(); n++){
josh_ohara 14:e88bcf5c0887 92 Vector2D bullet_position = bullet_vector[n].get_position();
josh_ohara 14:e88bcf5c0887 93 int bullet_x = bullet_position.x;
josh_ohara 14:e88bcf5c0887 94 int bullet_y = bullet_position.y;
josh_ohara 15:dde4ce4bf7fe 95 bool hit = bullet_vector[n].get_hit();
josh_ohara 15:dde4ce4bf7fe 96 if((alien_x <= bullet_x) &&
josh_ohara 15:dde4ce4bf7fe 97 (bullet_x <= alien_x + A1_size - 1)&&
josh_ohara 15:dde4ce4bf7fe 98 (alien_y <= bullet_y) &&
josh_ohara 15:dde4ce4bf7fe 99 (bullet_y <= alien_y + A1_size - 1)&&
josh_ohara 15:dde4ce4bf7fe 100 (hit==false)&&
josh_ohara 15:dde4ce4bf7fe 101 (alien_life == true)) {
josh_ohara 14:e88bcf5c0887 102 bool T = true;
josh_ohara 14:e88bcf5c0887 103 bool F = false;
josh_ohara 14:e88bcf5c0887 104 A1.set_life(i,F);
josh_ohara 21:970807533b10 105 S1.set_bullet_hit(n,T);
josh_ohara 24:ff5af5a013b5 106 pad.tone(600.0,0.2);
josh_ohara 14:e88bcf5c0887 107 }
josh_ohara 14:e88bcf5c0887 108 }
josh_ohara 14:e88bcf5c0887 109 }
josh_ohara 14:e88bcf5c0887 110 }
josh_ohara 14:e88bcf5c0887 111
josh_ohara 15:dde4ce4bf7fe 112 void SpaceInvaderEngine::ship_bullet_cover1_collision(Gamepad &pad, N5110 &lcd){
josh_ohara 15:dde4ce4bf7fe 113 vector<Rock> cover_vector_1 = C1.get_vector();
josh_ohara 21:970807533b10 114 vector<Bullet> bullet_vector = S1.get_bullet_vector();
josh_ohara 15:dde4ce4bf7fe 115 for(int i = 0; i < cover_vector_1.size(); i++){
josh_ohara 15:dde4ce4bf7fe 116 Vector2D rock_position = cover_vector_1[i].get_position();
josh_ohara 15:dde4ce4bf7fe 117 int rock_x = rock_position.x;
josh_ohara 15:dde4ce4bf7fe 118 int rock_y = rock_position.y;
josh_ohara 15:dde4ce4bf7fe 119 bool rock_life = cover_vector_1[i].get_life();
josh_ohara 15:dde4ce4bf7fe 120 for (int n = 0; n < bullet_vector.size(); n++){
josh_ohara 15:dde4ce4bf7fe 121 Vector2D bullet_position = bullet_vector[n].get_position();
josh_ohara 15:dde4ce4bf7fe 122 int bullet_x = bullet_position.x;
josh_ohara 15:dde4ce4bf7fe 123 int bullet_y = bullet_position.y;
josh_ohara 15:dde4ce4bf7fe 124 bool hit = bullet_vector[n].get_hit();
josh_ohara 15:dde4ce4bf7fe 125 if((rock_x <= bullet_x) &&
josh_ohara 15:dde4ce4bf7fe 126 (bullet_x <= rock_x + 2)&&
josh_ohara 15:dde4ce4bf7fe 127 (rock_y <= bullet_y) &&
josh_ohara 15:dde4ce4bf7fe 128 (bullet_y <= rock_y + 2)&&
josh_ohara 15:dde4ce4bf7fe 129 (hit==false)&&
josh_ohara 15:dde4ce4bf7fe 130 (rock_life==true)){
josh_ohara 15:dde4ce4bf7fe 131 bool T = true;
josh_ohara 15:dde4ce4bf7fe 132 bool F = false;
josh_ohara 15:dde4ce4bf7fe 133 C1.set_life(i,F);
josh_ohara 21:970807533b10 134 S1.set_bullet_hit(n,T);
josh_ohara 15:dde4ce4bf7fe 135 }
josh_ohara 15:dde4ce4bf7fe 136 }
josh_ohara 15:dde4ce4bf7fe 137 }
josh_ohara 15:dde4ce4bf7fe 138 }
josh_ohara 15:dde4ce4bf7fe 139
josh_ohara 15:dde4ce4bf7fe 140 void SpaceInvaderEngine::ship_bullet_cover2_collision(Gamepad &pad, N5110 &lcd){
josh_ohara 15:dde4ce4bf7fe 141 vector<Rock> cover_vector_2 = C2.get_vector();
josh_ohara 21:970807533b10 142 vector<Bullet> bullet_vector = S1.get_bullet_vector();
josh_ohara 15:dde4ce4bf7fe 143 for(int i = 0; i < cover_vector_2.size(); i++){
josh_ohara 15:dde4ce4bf7fe 144 Vector2D rock_position = cover_vector_2[i].get_position();
josh_ohara 15:dde4ce4bf7fe 145 int rock_x = rock_position.x;
josh_ohara 15:dde4ce4bf7fe 146 int rock_y = rock_position.y;
josh_ohara 15:dde4ce4bf7fe 147 bool rock_life = cover_vector_2[i].get_life();
josh_ohara 15:dde4ce4bf7fe 148 for (int n = 0; n < bullet_vector.size(); n++){
josh_ohara 15:dde4ce4bf7fe 149 Vector2D bullet_position = bullet_vector[n].get_position();
josh_ohara 15:dde4ce4bf7fe 150 int bullet_x = bullet_position.x;
josh_ohara 15:dde4ce4bf7fe 151 int bullet_y = bullet_position.y;
josh_ohara 15:dde4ce4bf7fe 152 bool hit = bullet_vector[n].get_hit();
josh_ohara 15:dde4ce4bf7fe 153 if((rock_x <= bullet_x) &&
josh_ohara 15:dde4ce4bf7fe 154 (bullet_x <= rock_x + 2)&&
josh_ohara 15:dde4ce4bf7fe 155 (rock_y <= bullet_y) &&
josh_ohara 15:dde4ce4bf7fe 156 (bullet_y <= rock_y + 2)&&
josh_ohara 15:dde4ce4bf7fe 157 (hit==false)&&
josh_ohara 15:dde4ce4bf7fe 158 (rock_life==true)){
josh_ohara 15:dde4ce4bf7fe 159 bool T = true;
josh_ohara 15:dde4ce4bf7fe 160 bool F = false;
josh_ohara 15:dde4ce4bf7fe 161 C2.set_life(i,F);
josh_ohara 21:970807533b10 162 S1.set_bullet_hit(n,T);
josh_ohara 15:dde4ce4bf7fe 163 }
josh_ohara 15:dde4ce4bf7fe 164 }
josh_ohara 15:dde4ce4bf7fe 165 }
josh_ohara 15:dde4ce4bf7fe 166 }
josh_ohara 15:dde4ce4bf7fe 167
josh_ohara 15:dde4ce4bf7fe 168 void SpaceInvaderEngine::ship_bullet_cover3_collision(Gamepad &pad, N5110 &lcd){
josh_ohara 15:dde4ce4bf7fe 169 vector<Rock> cover_vector_3 = C3.get_vector();
josh_ohara 21:970807533b10 170 vector<Bullet> bullet_vector = S1.get_bullet_vector();
josh_ohara 15:dde4ce4bf7fe 171 for(int i = 0; i < cover_vector_3.size(); i++){
josh_ohara 15:dde4ce4bf7fe 172 Vector2D rock_position = cover_vector_3[i].get_position();
josh_ohara 15:dde4ce4bf7fe 173 int rock_x = rock_position.x;
josh_ohara 15:dde4ce4bf7fe 174 int rock_y = rock_position.y;
josh_ohara 15:dde4ce4bf7fe 175 bool rock_life = cover_vector_3[i].get_life();
josh_ohara 15:dde4ce4bf7fe 176 for (int n = 0; n < bullet_vector.size(); n++){
josh_ohara 15:dde4ce4bf7fe 177 Vector2D bullet_position = bullet_vector[n].get_position();
josh_ohara 15:dde4ce4bf7fe 178 int bullet_x = bullet_position.x;
josh_ohara 15:dde4ce4bf7fe 179 int bullet_y = bullet_position.y;
josh_ohara 15:dde4ce4bf7fe 180 bool hit = bullet_vector[n].get_hit();
josh_ohara 15:dde4ce4bf7fe 181 if((rock_x <= bullet_x) &&
josh_ohara 15:dde4ce4bf7fe 182 (bullet_x <= rock_x + 2)&&
josh_ohara 15:dde4ce4bf7fe 183 (rock_y <= bullet_y) &&
josh_ohara 15:dde4ce4bf7fe 184 (bullet_y <= rock_y + 2)&&
josh_ohara 15:dde4ce4bf7fe 185 (hit==false)&&
josh_ohara 15:dde4ce4bf7fe 186 (rock_life==true)){
josh_ohara 15:dde4ce4bf7fe 187 bool T = true;
josh_ohara 15:dde4ce4bf7fe 188 bool F = false;
josh_ohara 15:dde4ce4bf7fe 189 C3.set_life(i,F);
josh_ohara 21:970807533b10 190 S1.set_bullet_hit(n,T);
josh_ohara 15:dde4ce4bf7fe 191 }
josh_ohara 15:dde4ce4bf7fe 192 }
josh_ohara 15:dde4ce4bf7fe 193 }
josh_ohara 15:dde4ce4bf7fe 194 }
josh_ohara 15:dde4ce4bf7fe 195
josh_ohara 20:0b6f1cfc5be6 196 void SpaceInvaderEngine::alien_bullet_ship_collision(Gamepad &pad, N5110 &lcd){
josh_ohara 20:0b6f1cfc5be6 197 Vector2D ship_position = S1.get_position();
josh_ohara 20:0b6f1cfc5be6 198 int ship_x = ship_position.x;
josh_ohara 20:0b6f1cfc5be6 199 int ship_y = ship_position.y;
josh_ohara 20:0b6f1cfc5be6 200 vector<Alien> alien_vector = A1.get_vector();
josh_ohara 20:0b6f1cfc5be6 201 for(int i = 0; i < alien_vector.size(); i++){
josh_ohara 20:0b6f1cfc5be6 202 vector<AlienBullet> alien_bullets = A1.get_alien_bullet_vector(i);
josh_ohara 20:0b6f1cfc5be6 203 for(int n = 0; n < alien_bullets.size(); n++){
josh_ohara 20:0b6f1cfc5be6 204 Vector2D bullet_position = alien_bullets[n].get_position();
josh_ohara 20:0b6f1cfc5be6 205 bool hit = alien_bullets[n].get_hit();
josh_ohara 20:0b6f1cfc5be6 206 int bullet_x = bullet_position.x;
josh_ohara 20:0b6f1cfc5be6 207 int bullet_y = bullet_position.y;
josh_ohara 20:0b6f1cfc5be6 208 if((ship_x <= bullet_x) &&
josh_ohara 23:aa86e32b6a74 209 (bullet_x <= ship_x + 8)&&
josh_ohara 20:0b6f1cfc5be6 210 (ship_y <= bullet_y) &&
josh_ohara 20:0b6f1cfc5be6 211 (bullet_y <= ship_y + 2)&&
josh_ohara 20:0b6f1cfc5be6 212 (hit==false)){
josh_ohara 20:0b6f1cfc5be6 213 S1.set_life(false);
josh_ohara 20:0b6f1cfc5be6 214 alien_bullets[n].set_hit(true);
josh_ohara 20:0b6f1cfc5be6 215 }
josh_ohara 20:0b6f1cfc5be6 216 }
josh_ohara 20:0b6f1cfc5be6 217 }
josh_ohara 20:0b6f1cfc5be6 218 }
josh_ohara 20:0b6f1cfc5be6 219
josh_ohara 20:0b6f1cfc5be6 220 void SpaceInvaderEngine::alien_bullet_cover3_collision(Gamepad &pad, N5110 &lcd){
josh_ohara 20:0b6f1cfc5be6 221 vector<Rock> cover_vector_3 = C3.get_vector();
josh_ohara 20:0b6f1cfc5be6 222 vector<Alien> alien_vector = A1.get_vector();
josh_ohara 20:0b6f1cfc5be6 223 for(int q = 0; q < cover_vector_3.size(); q++){
josh_ohara 20:0b6f1cfc5be6 224 Vector2D rock_position = cover_vector_3[q].get_position();
josh_ohara 20:0b6f1cfc5be6 225 int rock_x = rock_position.x;
josh_ohara 20:0b6f1cfc5be6 226 int rock_y = rock_position.y;
josh_ohara 20:0b6f1cfc5be6 227 bool rock_life = cover_vector_3[q].get_life();
josh_ohara 20:0b6f1cfc5be6 228 for(int i = 0; i < alien_vector.size(); i++){
josh_ohara 20:0b6f1cfc5be6 229 vector<AlienBullet> alien_bullets = A1.get_alien_bullet_vector(i);
josh_ohara 20:0b6f1cfc5be6 230 for(int n = 0; n < alien_bullets.size(); n++){
josh_ohara 20:0b6f1cfc5be6 231 Vector2D bullet_position = alien_bullets[n].get_position();
josh_ohara 20:0b6f1cfc5be6 232 bool hit = alien_bullets[n].get_hit();
josh_ohara 20:0b6f1cfc5be6 233 int bullet_x = bullet_position.x;
josh_ohara 20:0b6f1cfc5be6 234 int bullet_y = bullet_position.y;
josh_ohara 20:0b6f1cfc5be6 235 if((rock_x <= bullet_x) &&
josh_ohara 20:0b6f1cfc5be6 236 (bullet_x <= rock_x + 2)&&
josh_ohara 20:0b6f1cfc5be6 237 (rock_y <= bullet_y) &&
josh_ohara 20:0b6f1cfc5be6 238 (bullet_y <= rock_y + 2)&&
josh_ohara 20:0b6f1cfc5be6 239 (hit==false)&&
josh_ohara 20:0b6f1cfc5be6 240 (rock_life==true)){
josh_ohara 20:0b6f1cfc5be6 241 C3.set_life(q,false);
josh_ohara 20:0b6f1cfc5be6 242 A1.set_bullet_hit(i,n,true);
josh_ohara 20:0b6f1cfc5be6 243 }
josh_ohara 20:0b6f1cfc5be6 244 }
josh_ohara 20:0b6f1cfc5be6 245 }
josh_ohara 20:0b6f1cfc5be6 246 }
josh_ohara 20:0b6f1cfc5be6 247 }
josh_ohara 20:0b6f1cfc5be6 248
josh_ohara 20:0b6f1cfc5be6 249 void SpaceInvaderEngine::alien_bullet_cover1_collision(Gamepad &pad, N5110 &lcd){
josh_ohara 20:0b6f1cfc5be6 250 vector<Rock> cover_vector_1 = C1.get_vector();
josh_ohara 20:0b6f1cfc5be6 251 vector<Alien> alien_vector = A1.get_vector();
josh_ohara 20:0b6f1cfc5be6 252 for(int q = 0; q < cover_vector_1.size(); q++){
josh_ohara 20:0b6f1cfc5be6 253 Vector2D rock_position = cover_vector_1[q].get_position();
josh_ohara 20:0b6f1cfc5be6 254 int rock_x = rock_position.x;
josh_ohara 20:0b6f1cfc5be6 255 int rock_y = rock_position.y;
josh_ohara 20:0b6f1cfc5be6 256 bool rock_life = cover_vector_1[q].get_life();
josh_ohara 20:0b6f1cfc5be6 257 for(int i = 0; i < alien_vector.size(); i++){
josh_ohara 20:0b6f1cfc5be6 258 vector<AlienBullet> alien_bullets = A1.get_alien_bullet_vector(i);
josh_ohara 20:0b6f1cfc5be6 259 for(int n = 0; n < alien_bullets.size(); n++){
josh_ohara 20:0b6f1cfc5be6 260 Vector2D bullet_position = alien_bullets[n].get_position();
josh_ohara 20:0b6f1cfc5be6 261 bool hit = alien_bullets[n].get_hit();
josh_ohara 20:0b6f1cfc5be6 262 int bullet_x = bullet_position.x;
josh_ohara 20:0b6f1cfc5be6 263 int bullet_y = bullet_position.y;
josh_ohara 20:0b6f1cfc5be6 264 if((rock_x <= bullet_x) &&
josh_ohara 20:0b6f1cfc5be6 265 (bullet_x <= rock_x + 2)&&
josh_ohara 20:0b6f1cfc5be6 266 (rock_y <= bullet_y) &&
josh_ohara 20:0b6f1cfc5be6 267 (bullet_y <= rock_y + 2)&&
josh_ohara 20:0b6f1cfc5be6 268 (hit==false)&&
josh_ohara 20:0b6f1cfc5be6 269 (rock_life==true)){
josh_ohara 20:0b6f1cfc5be6 270 C1.set_life(q,false);
josh_ohara 20:0b6f1cfc5be6 271 A1.set_bullet_hit(i,n,true);
josh_ohara 20:0b6f1cfc5be6 272 }
josh_ohara 20:0b6f1cfc5be6 273 }
josh_ohara 20:0b6f1cfc5be6 274 }
josh_ohara 20:0b6f1cfc5be6 275 }
josh_ohara 20:0b6f1cfc5be6 276 }
josh_ohara 20:0b6f1cfc5be6 277
josh_ohara 20:0b6f1cfc5be6 278 void SpaceInvaderEngine::alien_bullet_cover2_collision(Gamepad &pad, N5110 &lcd){
josh_ohara 20:0b6f1cfc5be6 279 vector<Rock> cover_vector_2 = C2.get_vector();
josh_ohara 20:0b6f1cfc5be6 280 vector<Alien> alien_vector = A1.get_vector();
josh_ohara 21:970807533b10 281 for(int q = 0; q < cover_vector_2.size(); q++){
josh_ohara 20:0b6f1cfc5be6 282 Vector2D rock_position = cover_vector_2[q].get_position();
josh_ohara 20:0b6f1cfc5be6 283 int rock_x = rock_position.x;
josh_ohara 20:0b6f1cfc5be6 284 int rock_y = rock_position.y;
josh_ohara 20:0b6f1cfc5be6 285 bool rock_life = cover_vector_2[q].get_life();
josh_ohara 21:970807533b10 286 for(int i = 0; i < alien_vector.size(); i++){
josh_ohara 21:970807533b10 287 vector<AlienBullet> alien_bullets = A1.get_alien_bullet_vector(i);
josh_ohara 21:970807533b10 288 for(int n = 0; n < alien_bullets.size(); n++){
josh_ohara 21:970807533b10 289 Vector2D bullet_position = alien_bullets[n].get_position();
josh_ohara 21:970807533b10 290 bool hit = alien_bullets[n].get_hit();
josh_ohara 21:970807533b10 291 int bullet_x = bullet_position.x;
josh_ohara 21:970807533b10 292 int bullet_y = bullet_position.y;
josh_ohara 21:970807533b10 293 if((rock_x <= bullet_x) &&
josh_ohara 21:970807533b10 294 (bullet_x <= rock_x + 2)&&
josh_ohara 21:970807533b10 295 (rock_y <= bullet_y) &&
josh_ohara 21:970807533b10 296 (bullet_y <= rock_y + 2)&&
josh_ohara 21:970807533b10 297 (hit==false)&&
josh_ohara 21:970807533b10 298 (rock_life==true)){
josh_ohara 21:970807533b10 299 C2.set_life(q,false);
josh_ohara 21:970807533b10 300 A1.set_bullet_hit(i,n,true);
josh_ohara 21:970807533b10 301 }
josh_ohara 21:970807533b10 302 }
josh_ohara 21:970807533b10 303 }
josh_ohara 21:970807533b10 304 }
josh_ohara 21:970807533b10 305 }
josh_ohara 21:970807533b10 306
josh_ohara 21:970807533b10 307 void SpaceInvaderEngine::alien_ship_collision(Gamepad &pad, N5110 &lcd){
josh_ohara 21:970807533b10 308 Vector2D ship_position = S1.get_position();
josh_ohara 21:970807533b10 309 int ship_x = ship_position.x;
josh_ohara 21:970807533b10 310 int ship_y = ship_position.y;
josh_ohara 21:970807533b10 311 vector<Alien> alien_vector = A1.get_vector();
josh_ohara 21:970807533b10 312 for(int i = 0; i < alien_vector.size(); i++){
josh_ohara 21:970807533b10 313 Vector2D alien_position = alien_vector[i].get_position();
josh_ohara 21:970807533b10 314 int alien_x = alien_position.x;
josh_ohara 21:970807533b10 315 int alien_y = alien_position.y;
josh_ohara 21:970807533b10 316 for(int q = 0; q < 4; q++){
josh_ohara 21:970807533b10 317 for(int n = 0; n < 4; n++){
josh_ohara 21:970807533b10 318 if((ship_x - 1 < alien_x + q) &&
josh_ohara 21:970807533b10 319 (ship_x + 9 > alien_x + q)&&
josh_ohara 21:970807533b10 320 (ship_y - 1 < alien_y + n)&&
josh_ohara 21:970807533b10 321 (S1.get_life()==true)&&
josh_ohara 21:970807533b10 322 (A1.get_life(i)==true)){
josh_ohara 21:970807533b10 323 S1.set_life(false);
josh_ohara 21:970807533b10 324 A1.set_life(i,false);
josh_ohara 21:970807533b10 325 }
josh_ohara 21:970807533b10 326 }
josh_ohara 21:970807533b10 327 }
josh_ohara 21:970807533b10 328 }
josh_ohara 21:970807533b10 329 }
josh_ohara 21:970807533b10 330
josh_ohara 22:3e978b1d7958 331
josh_ohara 21:970807533b10 332 void SpaceInvaderEngine::alien_cover1_collision(Gamepad &pad, N5110 &lcd){
josh_ohara 21:970807533b10 333 vector<Alien> alien_vector = A1.get_vector();
josh_ohara 21:970807533b10 334 vector<Rock> cover1 = C1.get_vector();
josh_ohara 21:970807533b10 335 for(int i = 0; i < alien_vector.size(); i++){
josh_ohara 21:970807533b10 336 Vector2D alien_position = alien_vector[i].get_position();
josh_ohara 21:970807533b10 337 int alien_x = alien_position.x;
josh_ohara 21:970807533b10 338 int alien_y = alien_position.y;
josh_ohara 21:970807533b10 339 for(int p = 0; p < cover1.size(); p++){
josh_ohara 21:970807533b10 340 Vector2D rock_position = cover1[p].get_position();
josh_ohara 21:970807533b10 341 int rock_x = rock_position.x;
josh_ohara 21:970807533b10 342 int rock_y = rock_position.y;
josh_ohara 21:970807533b10 343 for(int q = 0; q < 4; q++){
josh_ohara 21:970807533b10 344 for(int s = 0; s < 4; s++){
josh_ohara 21:970807533b10 345 if((rock_x < alien_x + q) &&
josh_ohara 21:970807533b10 346 (rock_x + 2 > alien_x + q)&&
josh_ohara 21:970807533b10 347 (rock_y < alien_y + s)&&
josh_ohara 21:970807533b10 348 (rock_y + 2 > alien_y + s)&&
josh_ohara 21:970807533b10 349 (C1.get_life(p)==true)&&
josh_ohara 21:970807533b10 350 (A1.get_life(i)==true)){
josh_ohara 21:970807533b10 351 C1.set_life(p,false);
josh_ohara 21:970807533b10 352 A1.set_life(i,false);
josh_ohara 21:970807533b10 353 }
josh_ohara 21:970807533b10 354 }
josh_ohara 21:970807533b10 355 }
josh_ohara 21:970807533b10 356 }
josh_ohara 21:970807533b10 357 }
josh_ohara 21:970807533b10 358 }
josh_ohara 21:970807533b10 359
josh_ohara 21:970807533b10 360 void SpaceInvaderEngine::alien_cover2_collision(Gamepad &pad, N5110 &lcd){
josh_ohara 21:970807533b10 361 vector<Alien> alien_vector = A1.get_vector();
josh_ohara 21:970807533b10 362 vector<Rock> cover2 = C2.get_vector();
josh_ohara 21:970807533b10 363 for(int i = 0; i < alien_vector.size(); i++){
josh_ohara 21:970807533b10 364 Vector2D alien_position = alien_vector[i].get_position();
josh_ohara 21:970807533b10 365 int alien_x = alien_position.x;
josh_ohara 21:970807533b10 366 int alien_y = alien_position.y;
josh_ohara 21:970807533b10 367 for(int p = 0; p < cover2.size(); p++){
josh_ohara 21:970807533b10 368 Vector2D rock_position = cover2[p].get_position();
josh_ohara 21:970807533b10 369 int rock_x = rock_position.x;
josh_ohara 21:970807533b10 370 int rock_y = rock_position.y;
josh_ohara 21:970807533b10 371 for(int q = 0; q < 4; q++){
josh_ohara 21:970807533b10 372 for(int s = 0; s < 4; s++){
josh_ohara 21:970807533b10 373 if((rock_x < alien_x + q) &&
josh_ohara 21:970807533b10 374 (rock_x + 2 > alien_x + q)&&
josh_ohara 21:970807533b10 375 (rock_y < alien_y + s)&&
josh_ohara 21:970807533b10 376 (rock_y + 2 > alien_y + s)&&
josh_ohara 21:970807533b10 377 (C2.get_life(p)==true)&&
josh_ohara 21:970807533b10 378 (A1.get_life(i)==true)){
josh_ohara 21:970807533b10 379 C2.set_life(p,false);
josh_ohara 21:970807533b10 380 A1.set_life(i,false);
josh_ohara 21:970807533b10 381 }
josh_ohara 21:970807533b10 382 }
josh_ohara 21:970807533b10 383 }
josh_ohara 21:970807533b10 384 }
josh_ohara 21:970807533b10 385 }
josh_ohara 21:970807533b10 386 }
josh_ohara 21:970807533b10 387
josh_ohara 21:970807533b10 388 void SpaceInvaderEngine::alien_cover3_collision(Gamepad &pad, N5110 &lcd){
josh_ohara 21:970807533b10 389 vector<Alien> alien_vector = A1.get_vector();
josh_ohara 21:970807533b10 390 vector<Rock> cover3 = C3.get_vector();
josh_ohara 21:970807533b10 391 for(int i = 0; i < alien_vector.size(); i++){
josh_ohara 21:970807533b10 392 Vector2D alien_position = alien_vector[i].get_position();
josh_ohara 21:970807533b10 393 int alien_x = alien_position.x;
josh_ohara 21:970807533b10 394 int alien_y = alien_position.y;
josh_ohara 21:970807533b10 395 for(int p = 0; p < cover3.size(); p++){
josh_ohara 21:970807533b10 396 Vector2D rock_position = cover3[p].get_position();
josh_ohara 21:970807533b10 397 int rock_x = rock_position.x;
josh_ohara 21:970807533b10 398 int rock_y = rock_position.y;
josh_ohara 21:970807533b10 399 for(int q = 0; q < 4; q++){
josh_ohara 21:970807533b10 400 for(int s = 0; s < 4; s++){
josh_ohara 21:970807533b10 401 if((rock_x < alien_x + q) &&
josh_ohara 21:970807533b10 402 (rock_x + 2 > alien_x + q)&&
josh_ohara 21:970807533b10 403 (rock_y < alien_y + s)&&
josh_ohara 21:970807533b10 404 (rock_y + 2 > alien_y + s)&&
josh_ohara 21:970807533b10 405 (C3.get_life(p)==true)&&
josh_ohara 21:970807533b10 406 (A1.get_life(i)==true)){
josh_ohara 21:970807533b10 407 C3.set_life(p,false);
josh_ohara 21:970807533b10 408 A1.set_life(i,false);
josh_ohara 21:970807533b10 409 }
josh_ohara 20:0b6f1cfc5be6 410 }
josh_ohara 20:0b6f1cfc5be6 411 }
josh_ohara 20:0b6f1cfc5be6 412 }
josh_ohara 20:0b6f1cfc5be6 413 }
josh_ohara 22:3e978b1d7958 414 }
josh_ohara 22:3e978b1d7958 415
josh_ohara 22:3e978b1d7958 416 bool SpaceInvaderEngine::get_armada_life(){
josh_ohara 22:3e978b1d7958 417 return A1.get_armada_life();
josh_ohara 22:3e978b1d7958 418 }
josh_ohara 22:3e978b1d7958 419
josh_ohara 22:3e978b1d7958 420 bool SpaceInvaderEngine::get_ship_life(){
josh_ohara 22:3e978b1d7958 421 return S1.get_life();
josh_ohara 23:aa86e32b6a74 422 }
josh_ohara 23:aa86e32b6a74 423
josh_ohara 23:aa86e32b6a74 424 void SpaceInvaderEngine::kill_all(){
josh_ohara 23:aa86e32b6a74 425 vector<Rock> cover_vector_1 = C1.get_vector();
josh_ohara 23:aa86e32b6a74 426 vector<Rock> cover_vector_2 = C2.get_vector();
josh_ohara 23:aa86e32b6a74 427 vector<Rock> cover_vector_3 = C3.get_vector();
josh_ohara 23:aa86e32b6a74 428 for(int i = 0; i < cover_vector_1.size(); i++){
josh_ohara 23:aa86e32b6a74 429 C1.set_life(i,false);
josh_ohara 23:aa86e32b6a74 430 C2.set_life(i,false);
josh_ohara 23:aa86e32b6a74 431 C3.set_life(i,false);
josh_ohara 23:aa86e32b6a74 432 }
josh_ohara 23:aa86e32b6a74 433 vector<Bullet> ship_bullet_vector = S1.get_bullet_vector();
josh_ohara 23:aa86e32b6a74 434 for(int n = 0; n < ship_bullet_vector.size(); n++){
josh_ohara 23:aa86e32b6a74 435 S1.set_bullet_hit(n,true);
josh_ohara 23:aa86e32b6a74 436 }
josh_ohara 23:aa86e32b6a74 437 vector<Alien> alien_vector = A1.get_vector();
josh_ohara 23:aa86e32b6a74 438 for(int p = 0; p < alien_vector.size(); p++){
josh_ohara 23:aa86e32b6a74 439 vector<AlienBullet> alien_bullets = A1.get_alien_bullet_vector(p);
josh_ohara 23:aa86e32b6a74 440 for(int q = 0; q < alien_bullets.size(); q++){
josh_ohara 23:aa86e32b6a74 441 A1.set_bullet_hit(p,q,true);
josh_ohara 23:aa86e32b6a74 442 }
josh_ohara 23:aa86e32b6a74 443 }
josh_ohara 24:ff5af5a013b5 444 S1.set_life(false);
josh_ohara 23:aa86e32b6a74 445 }