Library containing the Game Engine

Committer:
ll14c4p
Date:
Thu May 04 08:34:38 2017 +0000
Revision:
11:832eb031310b
Parent:
10:df8ea4e747e2
Child:
12:6eeb06ed7c6b
Added Reset when Lose

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ll14c4p 0:5997fa876927 1 #include "GameEngine.h"
ll14c4p 0:5997fa876927 2
ll14c4p 0:5997fa876927 3 GameEngine::GameEngine()
ll14c4p 0:5997fa876927 4 {
ll14c4p 0:5997fa876927 5
ll14c4p 0:5997fa876927 6 }
ll14c4p 0:5997fa876927 7
ll14c4p 0:5997fa876927 8 GameEngine::~GameEngine()
ll14c4p 0:5997fa876927 9 {
ll14c4p 0:5997fa876927 10
ll14c4p 0:5997fa876927 11 }
ll14c4p 0:5997fa876927 12
ll14c4p 0:5997fa876927 13 void GameEngine::init()
ll14c4p 0:5997fa876927 14 {
ll14c4p 11:832eb031310b 15 int HP = 8; //Health value is chosen here.
ll14c4p 11:832eb031310b 16 _hb.init(HP); //HP value is then passed to the HealthBar library.
ll14c4p 0:5997fa876927 17
ll14c4p 0:5997fa876927 18 }
ll14c4p 0:5997fa876927 19
ll14c4p 0:5997fa876927 20
ll14c4p 0:5997fa876927 21
ll14c4p 0:5997fa876927 22 void GameEngine::read_input(Gamepad &pad)
ll14c4p 0:5997fa876927 23 {
ll14c4p 11:832eb031310b 24 _d = pad.get_direction(); //Obtains numeric data from hardware.
ll14c4p 11:832eb031310b 25 _mag = pad.get_mag(); //Obtains numeric data from hardware.
ll14c4p 0:5997fa876927 26 }
ll14c4p 0:5997fa876927 27
ll14c4p 8:bd718162a87c 28 void GameEngine::draw(N5110 &lcd, Gamepad &pad)
ll14c4p 0:5997fa876927 29 {
ll14c4p 11:832eb031310b 30 _p.draw(lcd); //Draws the Player Sprite.
ll14c4p 8:bd718162a87c 31 /*while ( pad.check_event(Gamepad::A_PRESSED) == true) {
ll14c4p 8:bd718162a87c 32 _proj.draw(lcd);
ll14c4p 8:bd718162a87c 33 }*/
ll14c4p 11:832eb031310b 34
ll14c4p 11:832eb031310b 35 //PROJ SPAWN, IF N = N +1, PROJ END, N-1
ll14c4p 11:832eb031310b 36
ll14c4p 11:832eb031310b 37 _proj.draw(lcd); //Draws the Projectile.
ll14c4p 11:832eb031310b 38 _t.draw(lcd); //Draws the first target.
ll14c4p 11:832eb031310b 39 _tt.draw(lcd); //Draws the second target.
ll14c4p 11:832eb031310b 40 _ttt.draw(lcd); //Draws the third target.
ll14c4p 11:832eb031310b 41 _hb.draw(lcd); //Draws the health bar.
ll14c4p 11:832eb031310b 42
ll14c4p 11:832eb031310b 43 if(_hb.ZeroHP == 1){ //Checks if health bar is empty. //Working
ll14c4p 11:832eb031310b 44
ll14c4p 11:832eb031310b 45 lcd.clear();
ll14c4p 11:832eb031310b 46 lcd.printString(" You Lose ",0,1);
ll14c4p 11:832eb031310b 47 lcd.printString(" Press A ",0,4);
ll14c4p 11:832eb031310b 48 lcd.refresh();
ll14c4p 11:832eb031310b 49
ll14c4p 11:832eb031310b 50 while(1){
ll14c4p 11:832eb031310b 51 if(pad.check_event(Gamepad::A_PRESSED)){
ll14c4p 11:832eb031310b 52 NVIC_SystemReset(); //Software Reset.
ll14c4p 11:832eb031310b 53 }
ll14c4p 11:832eb031310b 54
ll14c4p 11:832eb031310b 55 }
ll14c4p 11:832eb031310b 56 }
ll14c4p 11:832eb031310b 57
ll14c4p 11:832eb031310b 58
ll14c4p 10:df8ea4e747e2 59
ll14c4p 0:5997fa876927 60 }
ll14c4p 0:5997fa876927 61
ll14c4p 3:2f8f003ce4fd 62
ll14c4p 11:832eb031310b 63 void GameEngine::update(Gamepad &pad) //Updates objects on screen.
ll14c4p 0:5997fa876927 64 {
ll14c4p 0:5997fa876927 65 _p.update(_d,_mag);
ll14c4p 3:2f8f003ce4fd 66 _proj.update();
ll14c4p 6:c710fbc0f48e 67 _t.update();
ll14c4p 8:bd718162a87c 68 _tt.update();
ll14c4p 8:bd718162a87c 69 _ttt.update();
ll14c4p 11:832eb031310b 70 CheckProjTargetCollision(pad); //Function checks for when a projectile collides with target.
ll14c4p 11:832eb031310b 71 CheckPlayerTargetCollision(pad); //Function checks for when the player collides with target.
ll14c4p 11:832eb031310b 72 CheckTargetFloorCollision(pad); //Function checks for when a target collides with the floor or bottom of the screen.
ll14c4p 11:832eb031310b 73 _hb.update(); //Updates HP bar.
ll14c4p 10:df8ea4e747e2 74
ll14c4p 0:5997fa876927 75 }
ll14c4p 1:13a97de95e46 76
ll14c4p 1:13a97de95e46 77 void GameEngine::get_pos()
ll14c4p 1:13a97de95e46 78 {
ll14c4p 1:13a97de95e46 79 Vector2D player_pos = _p.get_pos();
ll14c4p 5:6224122fc07c 80 //printf("player pos = %f %f \n", player_pos.x, player_pos.y); //top left of player sprite
ll14c4p 4:e78f5bcddb01 81 // 81.000000 0.000000 top right
ll14c4p 4:e78f5bcddb01 82 // 0.000000 0.000000 is top left
ll14c4p 4:e78f5bcddb01 83 // 81.000000 45.000000 bottom right
ll14c4p 4:e78f5bcddb01 84 Vector2D proj_pos = _proj.get_pos();
ll14c4p 5:6224122fc07c 85 //printf("proj pos = %f %f \n", proj_pos.x, proj_pos.y);
ll14c4p 5:6224122fc07c 86
ll14c4p 5:6224122fc07c 87 playerx = player_pos.x;
ll14c4p 5:6224122fc07c 88 playery = player_pos.y;
ll14c4p 7:cf6304ef44fd 89 //printf("playerxy in GAME = %d %d \n", playerx, playery);
ll14c4p 11:832eb031310b 90 _proj.init(playerx,playery); //Sends the Player position to the projectile library
ll14c4p 1:13a97de95e46 91
ll14c4p 7:cf6304ef44fd 92 }
ll14c4p 7:cf6304ef44fd 93
ll14c4p 10:df8ea4e747e2 94
ll14c4p 10:df8ea4e747e2 95 /////////////////////////////////////////////
ll14c4p 10:df8ea4e747e2 96 /////////////////////////////////////////////
ll14c4p 10:df8ea4e747e2 97 /////////////////////////////////////////////
ll14c4p 10:df8ea4e747e2 98
ll14c4p 10:df8ea4e747e2 99 void GameEngine::CheckTargetFloorCollision(Gamepad &pad)
ll14c4p 10:df8ea4e747e2 100 {
ll14c4p 11:832eb031310b 101 Vector2D t_pos = _t.get_pos(); //Obtains the first target position.
ll14c4p 11:832eb031310b 102 Vector2D tt_pos = _tt.get_pos(); //Obtains the second target position.
ll14c4p 11:832eb031310b 103 Vector2D ttt_pos = _ttt.get_pos(); //Obtains the third target position.
ll14c4p 10:df8ea4e747e2 104
ll14c4p 10:df8ea4e747e2 105 //printf("%f t_pos \n", t_pos.y);
ll14c4p 10:df8ea4e747e2 106 //printf("%f tt_pos \n", tt_pos.y);
ll14c4p 10:df8ea4e747e2 107 //printf("%f ttt_pos \n", ttt_pos.y);
ll14c4p 10:df8ea4e747e2 108
ll14c4p 11:832eb031310b 109
ll14c4p 11:832eb031310b 110 //If statements check for when the position of targets are equal to the
ll14c4p 11:832eb031310b 111 //bottom of the screen, if so then HP is deducted using the HPLost2 variable.
ll14c4p 11:832eb031310b 112
ll14c4p 10:df8ea4e747e2 113 if(t_pos.y == 47){
ll14c4p 10:df8ea4e747e2 114 printf("t floor \n");
ll14c4p 10:df8ea4e747e2 115 HPLost2 = HPLost2 - 1;
ll14c4p 10:df8ea4e747e2 116 }
ll14c4p 10:df8ea4e747e2 117 if(tt_pos.y == 47){
ll14c4p 10:df8ea4e747e2 118 printf("tt floor \n");
ll14c4p 10:df8ea4e747e2 119 HPLost2 = HPLost2 - 1;
ll14c4p 10:df8ea4e747e2 120 }
ll14c4p 10:df8ea4e747e2 121 if(ttt_pos.y == 47){
ll14c4p 10:df8ea4e747e2 122 printf("ttt floor \n");
ll14c4p 10:df8ea4e747e2 123 HPLost2 = HPLost2 - 1;
ll14c4p 10:df8ea4e747e2 124 }
ll14c4p 10:df8ea4e747e2 125
ll14c4p 11:832eb031310b 126 //printf("%d HP \n", HPLost2);
ll14c4p 10:df8ea4e747e2 127
ll14c4p 11:832eb031310b 128 _hb.MinusHP2(HPLost2); //Variable is sent to the HealthBar library.
ll14c4p 10:df8ea4e747e2 129
ll14c4p 10:df8ea4e747e2 130 }
ll14c4p 10:df8ea4e747e2 131 /////////////////////////////////////////////
ll14c4p 10:df8ea4e747e2 132 /////////////////////////////////////////////
ll14c4p 10:df8ea4e747e2 133 /////////////////////////////////////////////
ll14c4p 10:df8ea4e747e2 134
ll14c4p 10:df8ea4e747e2 135
ll14c4p 10:df8ea4e747e2 136
ll14c4p 10:df8ea4e747e2 137
ll14c4p 6:c710fbc0f48e 138
ll14c4p 6:c710fbc0f48e 139
ll14c4p 7:cf6304ef44fd 140 void GameEngine::CheckProjTargetCollision(Gamepad &pad)
ll14c4p 7:cf6304ef44fd 141 {
ll14c4p 11:832eb031310b 142 //Obtains all needed coordinates.
ll14c4p 7:cf6304ef44fd 143 Vector2D proj_pos = _proj.get_pos();
ll14c4p 7:cf6304ef44fd 144 Vector2D t_pos = _t.get_pos();
ll14c4p 8:bd718162a87c 145 Vector2D tt_pos = _tt.get_pos();
ll14c4p 8:bd718162a87c 146 Vector2D ttt_pos = _ttt.get_pos();
ll14c4p 8:bd718162a87c 147
ll14c4p 7:cf6304ef44fd 148 Vector2D player_pos = _p.get_pos();
ll14c4p 8:bd718162a87c 149
ll14c4p 7:cf6304ef44fd 150 // printf("proj %f %f \n", proj_pos.x, proj_pos.y);
ll14c4p 7:cf6304ef44fd 151 //printf("targ %f %f \n", t_pos.x, t_pos.y);
ll14c4p 7:cf6304ef44fd 152
ll14c4p 11:832eb031310b 153
ll14c4p 11:832eb031310b 154 //If states check if the projectile has collided with any of the three
ll14c4p 11:832eb031310b 155 //targets, if so the target and the projectile's location is reset.
ll14c4p 11:832eb031310b 156
ll14c4p 7:cf6304ef44fd 157 if (
ll14c4p 7:cf6304ef44fd 158 ((proj_pos.y == t_pos.y) ||
ll14c4p 7:cf6304ef44fd 159 (proj_pos.y == t_pos.y + 1) ||
ll14c4p 7:cf6304ef44fd 160 (proj_pos.y == t_pos.y + 2) ||
ll14c4p 7:cf6304ef44fd 161 (proj_pos.y == t_pos.y + 3) ||
ll14c4p 8:bd718162a87c 162 (proj_pos.y == t_pos.y + 4) ||
ll14c4p 8:bd718162a87c 163 (proj_pos.y == t_pos.y + 5) ||
ll14c4p 8:bd718162a87c 164 (proj_pos.y == t_pos.y + 6) ||
ll14c4p 8:bd718162a87c 165 (proj_pos.y == t_pos.y + 7) ||
ll14c4p 8:bd718162a87c 166 (proj_pos.y + 1 == t_pos.y) ||
ll14c4p 8:bd718162a87c 167 (proj_pos.y + 1 == t_pos.y + 1) ||
ll14c4p 8:bd718162a87c 168 (proj_pos.y + 1 == t_pos.y + 2) ||
ll14c4p 8:bd718162a87c 169 (proj_pos.y + 1 == t_pos.y + 3) ||
ll14c4p 8:bd718162a87c 170 (proj_pos.y + 1 == t_pos.y + 4) ||
ll14c4p 8:bd718162a87c 171 (proj_pos.y + 1 == t_pos.y + 5) ||
ll14c4p 8:bd718162a87c 172 (proj_pos.y + 1 == t_pos.y + 6) ||
ll14c4p 8:bd718162a87c 173 (proj_pos.y + 1 == t_pos.y + 7)) &&
ll14c4p 7:cf6304ef44fd 174 ((proj_pos.x == t_pos.x) ||
ll14c4p 7:cf6304ef44fd 175 (proj_pos.x == t_pos.x + 1) ||
ll14c4p 7:cf6304ef44fd 176 (proj_pos.x == t_pos.x + 2) ||
ll14c4p 7:cf6304ef44fd 177 (proj_pos.x == t_pos.x + 3) ||
ll14c4p 8:bd718162a87c 178 (proj_pos.x == t_pos.x + 4) ||
ll14c4p 8:bd718162a87c 179 (proj_pos.x == t_pos.x + 5) ||
ll14c4p 8:bd718162a87c 180 (proj_pos.x == t_pos.x + 6) ||
ll14c4p 8:bd718162a87c 181 (proj_pos.x == t_pos.x + 7) ||
ll14c4p 8:bd718162a87c 182 (proj_pos.x + 1 == t_pos.x) ||
ll14c4p 8:bd718162a87c 183 (proj_pos.x + 1 == t_pos.x + 1) ||
ll14c4p 8:bd718162a87c 184 (proj_pos.x + 1 == t_pos.x + 2) ||
ll14c4p 8:bd718162a87c 185 (proj_pos.x + 1 == t_pos.x + 3) ||
ll14c4p 8:bd718162a87c 186 (proj_pos.x + 1 == t_pos.x + 4) ||
ll14c4p 8:bd718162a87c 187 (proj_pos.x + 1 == t_pos.x + 5) ||
ll14c4p 8:bd718162a87c 188 (proj_pos.x + 1 == t_pos.x + 6) ||
ll14c4p 8:bd718162a87c 189 (proj_pos.x + 1 == t_pos.x + 7) ||
ll14c4p 8:bd718162a87c 190 (proj_pos.x + 1 == t_pos.x + 8) ||
ll14c4p 8:bd718162a87c 191 (proj_pos.x + 1 == t_pos.x + 9) ||
ll14c4p 8:bd718162a87c 192 (proj_pos.x + 1 == t_pos.x + 10))
ll14c4p 7:cf6304ef44fd 193 ) {
ll14c4p 7:cf6304ef44fd 194
ll14c4p 8:bd718162a87c 195 //printf("projtarget working \n");
ll14c4p 8:bd718162a87c 196 proj_pos.x = player_pos.x +2;
ll14c4p 8:bd718162a87c 197 proj_pos.y = player_pos.y;
ll14c4p 7:cf6304ef44fd 198 t_pos.x = rand() % 79;
ll14c4p 7:cf6304ef44fd 199 t_pos.y = 0;
ll14c4p 7:cf6304ef44fd 200 // audio feedback
ll14c4p 7:cf6304ef44fd 201 //pad.tone(1000.0,0.1);
ll14c4p 7:cf6304ef44fd 202 }
ll14c4p 8:bd718162a87c 203
ll14c4p 8:bd718162a87c 204 if (
ll14c4p 8:bd718162a87c 205 ((proj_pos.y == tt_pos.y) ||
ll14c4p 8:bd718162a87c 206 (proj_pos.y == tt_pos.y + 1) ||
ll14c4p 8:bd718162a87c 207 (proj_pos.y == tt_pos.y + 2) ||
ll14c4p 8:bd718162a87c 208 (proj_pos.y == tt_pos.y + 3) ||
ll14c4p 8:bd718162a87c 209 (proj_pos.y == tt_pos.y + 4) ||
ll14c4p 8:bd718162a87c 210 (proj_pos.y == tt_pos.y + 5) ||
ll14c4p 8:bd718162a87c 211 (proj_pos.y == tt_pos.y + 6) ||
ll14c4p 8:bd718162a87c 212 (proj_pos.y == tt_pos.y + 7) ||
ll14c4p 8:bd718162a87c 213 (proj_pos.y + 1 == tt_pos.y) ||
ll14c4p 8:bd718162a87c 214 (proj_pos.y + 1 == tt_pos.y + 1) ||
ll14c4p 8:bd718162a87c 215 (proj_pos.y + 1 == tt_pos.y + 2) ||
ll14c4p 8:bd718162a87c 216 (proj_pos.y + 1 == tt_pos.y + 3) ||
ll14c4p 8:bd718162a87c 217 (proj_pos.y + 1 == tt_pos.y + 4) ||
ll14c4p 8:bd718162a87c 218 (proj_pos.y + 1 == tt_pos.y + 5) ||
ll14c4p 8:bd718162a87c 219 (proj_pos.y + 1 == tt_pos.y + 6) ||
ll14c4p 8:bd718162a87c 220 (proj_pos.y + 1 == tt_pos.y + 7)) &&
ll14c4p 8:bd718162a87c 221 ((proj_pos.x == tt_pos.x) ||
ll14c4p 8:bd718162a87c 222 (proj_pos.x == tt_pos.x + 1) ||
ll14c4p 8:bd718162a87c 223 (proj_pos.x == tt_pos.x + 2) ||
ll14c4p 8:bd718162a87c 224 (proj_pos.x == tt_pos.x + 3) ||
ll14c4p 8:bd718162a87c 225 (proj_pos.x == tt_pos.x + 4) ||
ll14c4p 8:bd718162a87c 226 (proj_pos.x == tt_pos.x + 5) ||
ll14c4p 8:bd718162a87c 227 (proj_pos.x == tt_pos.x + 6) ||
ll14c4p 8:bd718162a87c 228 (proj_pos.x == tt_pos.x + 7) ||
ll14c4p 8:bd718162a87c 229 (proj_pos.x + 1 == tt_pos.x) ||
ll14c4p 8:bd718162a87c 230 (proj_pos.x + 1 == tt_pos.x + 1) ||
ll14c4p 8:bd718162a87c 231 (proj_pos.x + 1 == tt_pos.x + 2) ||
ll14c4p 8:bd718162a87c 232 (proj_pos.x + 1 == tt_pos.x + 3) ||
ll14c4p 8:bd718162a87c 233 (proj_pos.x + 1 == tt_pos.x + 4) ||
ll14c4p 8:bd718162a87c 234 (proj_pos.x + 1 == tt_pos.x + 5) ||
ll14c4p 8:bd718162a87c 235 (proj_pos.x + 1 == tt_pos.x + 6) ||
ll14c4p 8:bd718162a87c 236 (proj_pos.x + 1 == tt_pos.x + 7) ||
ll14c4p 8:bd718162a87c 237 (proj_pos.x + 1 == tt_pos.x + 8) ||
ll14c4p 8:bd718162a87c 238 (proj_pos.x + 1 == tt_pos.x + 9) ||
ll14c4p 8:bd718162a87c 239 (proj_pos.x + 1 == tt_pos.x + 10))
ll14c4p 8:bd718162a87c 240 ) {
ll14c4p 8:bd718162a87c 241
ll14c4p 8:bd718162a87c 242 //printf("projtarget working \n");
ll14c4p 8:bd718162a87c 243 proj_pos.x = player_pos.x +2;
ll14c4p 8:bd718162a87c 244 proj_pos.y = player_pos.y;
ll14c4p 8:bd718162a87c 245 tt_pos.x = rand() % 79;
ll14c4p 8:bd718162a87c 246 tt_pos.y = 0;
ll14c4p 8:bd718162a87c 247 // audio feedback
ll14c4p 8:bd718162a87c 248 //pad.tone(1000.0,0.1);
ll14c4p 8:bd718162a87c 249 }
ll14c4p 8:bd718162a87c 250
ll14c4p 8:bd718162a87c 251 if (
ll14c4p 8:bd718162a87c 252 ((proj_pos.y == ttt_pos.y) ||
ll14c4p 8:bd718162a87c 253 (proj_pos.y == ttt_pos.y + 1) ||
ll14c4p 8:bd718162a87c 254 (proj_pos.y == ttt_pos.y + 2) ||
ll14c4p 8:bd718162a87c 255 (proj_pos.y == ttt_pos.y + 3) ||
ll14c4p 8:bd718162a87c 256 (proj_pos.y == ttt_pos.y + 4) ||
ll14c4p 8:bd718162a87c 257 (proj_pos.y == ttt_pos.y + 5) ||
ll14c4p 8:bd718162a87c 258 (proj_pos.y == ttt_pos.y + 6) ||
ll14c4p 8:bd718162a87c 259 (proj_pos.y == ttt_pos.y + 7) ||
ll14c4p 8:bd718162a87c 260 (proj_pos.y + 1 == ttt_pos.y) ||
ll14c4p 8:bd718162a87c 261 (proj_pos.y + 1 == ttt_pos.y + 1) ||
ll14c4p 8:bd718162a87c 262 (proj_pos.y + 1 == ttt_pos.y + 2) ||
ll14c4p 8:bd718162a87c 263 (proj_pos.y + 1 == ttt_pos.y + 3) ||
ll14c4p 8:bd718162a87c 264 (proj_pos.y + 1 == ttt_pos.y + 4) ||
ll14c4p 8:bd718162a87c 265 (proj_pos.y + 1 == ttt_pos.y + 5) ||
ll14c4p 8:bd718162a87c 266 (proj_pos.y + 1 == ttt_pos.y + 6) ||
ll14c4p 8:bd718162a87c 267 (proj_pos.y + 1 == ttt_pos.y + 7)) &&
ll14c4p 8:bd718162a87c 268 ((proj_pos.x == ttt_pos.x) ||
ll14c4p 8:bd718162a87c 269 (proj_pos.x == ttt_pos.x + 1) ||
ll14c4p 8:bd718162a87c 270 (proj_pos.x == ttt_pos.x + 2) ||
ll14c4p 8:bd718162a87c 271 (proj_pos.x == ttt_pos.x + 3) ||
ll14c4p 8:bd718162a87c 272 (proj_pos.x == ttt_pos.x + 4) ||
ll14c4p 8:bd718162a87c 273 (proj_pos.x == ttt_pos.x + 5) ||
ll14c4p 8:bd718162a87c 274 (proj_pos.x == ttt_pos.x + 6) ||
ll14c4p 8:bd718162a87c 275 (proj_pos.x == ttt_pos.x + 7) ||
ll14c4p 8:bd718162a87c 276 (proj_pos.x + 1 == ttt_pos.x) ||
ll14c4p 8:bd718162a87c 277 (proj_pos.x + 1 == ttt_pos.x + 1) ||
ll14c4p 8:bd718162a87c 278 (proj_pos.x + 1 == ttt_pos.x + 2) ||
ll14c4p 8:bd718162a87c 279 (proj_pos.x + 1 == ttt_pos.x + 3) ||
ll14c4p 8:bd718162a87c 280 (proj_pos.x + 1 == ttt_pos.x + 4) ||
ll14c4p 8:bd718162a87c 281 (proj_pos.x + 1 == ttt_pos.x + 5) ||
ll14c4p 8:bd718162a87c 282 (proj_pos.x + 1 == ttt_pos.x + 6) ||
ll14c4p 8:bd718162a87c 283 (proj_pos.x + 1 == ttt_pos.x + 7) ||
ll14c4p 8:bd718162a87c 284 (proj_pos.x + 1 == ttt_pos.x + 8) ||
ll14c4p 8:bd718162a87c 285 (proj_pos.x + 1 == ttt_pos.x + 9) ||
ll14c4p 8:bd718162a87c 286 (proj_pos.x + 1 == ttt_pos.x + 10))
ll14c4p 8:bd718162a87c 287 ) {
ll14c4p 8:bd718162a87c 288
ll14c4p 8:bd718162a87c 289 //printf("projtarget working \n");
ll14c4p 8:bd718162a87c 290 proj_pos.x = player_pos.x +2;
ll14c4p 8:bd718162a87c 291 proj_pos.y = player_pos.y;
ll14c4p 8:bd718162a87c 292 ttt_pos.x = rand() % 79;
ll14c4p 8:bd718162a87c 293 ttt_pos.y = 0;
ll14c4p 8:bd718162a87c 294 // audio feedback
ll14c4p 8:bd718162a87c 295 //pad.tone(1000.0,0.1);
ll14c4p 8:bd718162a87c 296 }
ll14c4p 8:bd718162a87c 297
ll14c4p 7:cf6304ef44fd 298
ll14c4p 7:cf6304ef44fd 299 _proj.set_pos(proj_pos);
ll14c4p 7:cf6304ef44fd 300 _t.set_pos(t_pos);
ll14c4p 8:bd718162a87c 301 _tt.set_pos(tt_pos);
ll14c4p 8:bd718162a87c 302 _ttt.set_pos(ttt_pos);
ll14c4p 8:bd718162a87c 303
ll14c4p 7:cf6304ef44fd 304
ll14c4p 7:cf6304ef44fd 305 }
ll14c4p 7:cf6304ef44fd 306
ll14c4p 7:cf6304ef44fd 307
ll14c4p 10:df8ea4e747e2 308 /////////////////////////////////////////////
ll14c4p 10:df8ea4e747e2 309 /////////////////////////////////////////////
ll14c4p 10:df8ea4e747e2 310 /////////////////////////////////////////////
ll14c4p 7:cf6304ef44fd 311
ll14c4p 7:cf6304ef44fd 312
ll14c4p 8:bd718162a87c 313 void GameEngine::CheckPlayerTargetCollision(Gamepad &pad)
ll14c4p 8:bd718162a87c 314 {
ll14c4p 11:832eb031310b 315 //Obtains all required coordinates.
ll14c4p 10:df8ea4e747e2 316
ll14c4p 10:df8ea4e747e2 317
ll14c4p 8:bd718162a87c 318 Vector2D t_pos = _t.get_pos();
ll14c4p 9:0f359bc0922f 319 Vector2D tt_pos = _tt.get_pos();
ll14c4p 9:0f359bc0922f 320 Vector2D ttt_pos = _ttt.get_pos();
ll14c4p 8:bd718162a87c 321 Vector2D player_pos = _p.get_pos();
ll14c4p 8:bd718162a87c 322
ll14c4p 11:832eb031310b 323 //If statements check if the player sprite has collided with any
ll14c4p 11:832eb031310b 324 //of the three targets, if so then the target location is reset and
ll14c4p 11:832eb031310b 325 //health is deducted using the HPLost1 variable.
ll14c4p 8:bd718162a87c 326
ll14c4p 8:bd718162a87c 327 if (
ll14c4p 8:bd718162a87c 328 ((player_pos.y == t_pos.y) ||
ll14c4p 8:bd718162a87c 329 (player_pos.y == t_pos.y + 1) ||
ll14c4p 8:bd718162a87c 330 (player_pos.y == t_pos.y + 2) ||
ll14c4p 8:bd718162a87c 331 (player_pos.y == t_pos.y + 3) ||
ll14c4p 8:bd718162a87c 332 (player_pos.y == t_pos.y + 4) ||
ll14c4p 9:0f359bc0922f 333 (player_pos.y == t_pos.y + 5) ||
ll14c4p 9:0f359bc0922f 334 (player_pos.y == t_pos.y + 6) ||
ll14c4p 9:0f359bc0922f 335 (player_pos.y == t_pos.y + 7) ||
ll14c4p 9:0f359bc0922f 336 (player_pos.y + 4 == t_pos.y) ||
ll14c4p 9:0f359bc0922f 337 (player_pos.y + 4 == t_pos.y + 1) ||
ll14c4p 9:0f359bc0922f 338 (player_pos.y + 4 == t_pos.y + 2) ||
ll14c4p 9:0f359bc0922f 339 (player_pos.y + 4 == t_pos.y + 3) ||
ll14c4p 9:0f359bc0922f 340 (player_pos.y + 4 == t_pos.y + 4) ||
ll14c4p 9:0f359bc0922f 341 (player_pos.y + 4 == t_pos.y + 5) ||
ll14c4p 9:0f359bc0922f 342 (player_pos.y + 4 == t_pos.y + 6) ||
ll14c4p 9:0f359bc0922f 343 (player_pos.y + 4 == t_pos.y + 7)) &&
ll14c4p 8:bd718162a87c 344 ((player_pos.x == t_pos.x) ||
ll14c4p 8:bd718162a87c 345 (player_pos.x == t_pos.x + 1) ||
ll14c4p 8:bd718162a87c 346 (player_pos.x == t_pos.x + 2) ||
ll14c4p 8:bd718162a87c 347 (player_pos.x == t_pos.x + 3) ||
ll14c4p 8:bd718162a87c 348 (player_pos.x == t_pos.x + 4) ||
ll14c4p 9:0f359bc0922f 349 (player_pos.x == t_pos.x + 5) ||
ll14c4p 9:0f359bc0922f 350 (player_pos.x == t_pos.x + 6) ||
ll14c4p 9:0f359bc0922f 351 (player_pos.x == t_pos.x + 7) ||
ll14c4p 9:0f359bc0922f 352 (player_pos.x == t_pos.x + 8) ||
ll14c4p 9:0f359bc0922f 353 (player_pos.x == t_pos.x + 9) ||
ll14c4p 9:0f359bc0922f 354 (player_pos.x == t_pos.x + 10) ||
ll14c4p 9:0f359bc0922f 355 (player_pos.x + 5 == t_pos.x) ||
ll14c4p 9:0f359bc0922f 356 (player_pos.x + 5 == t_pos.x + 1) ||
ll14c4p 9:0f359bc0922f 357 (player_pos.x + 5 == t_pos.x + 2) ||
ll14c4p 9:0f359bc0922f 358 (player_pos.x + 5 == t_pos.x + 3) ||
ll14c4p 9:0f359bc0922f 359 (player_pos.x + 5 == t_pos.x + 4) ||
ll14c4p 9:0f359bc0922f 360 (player_pos.x + 5 == t_pos.x + 5) ||
ll14c4p 9:0f359bc0922f 361 (player_pos.x + 5 == t_pos.x + 6) ||
ll14c4p 9:0f359bc0922f 362 (player_pos.x + 5 == t_pos.x + 7) ||
ll14c4p 9:0f359bc0922f 363 (player_pos.x + 5 == t_pos.x + 8) ||
ll14c4p 9:0f359bc0922f 364 (player_pos.x + 5 == t_pos.x + 9) ||
ll14c4p 9:0f359bc0922f 365 (player_pos.x + 5 == t_pos.x + 10))
ll14c4p 8:bd718162a87c 366 ) {
ll14c4p 8:bd718162a87c 367
ll14c4p 10:df8ea4e747e2 368 //printf("collision working3 \n");
ll14c4p 8:bd718162a87c 369 // audio feedback
ll14c4p 8:bd718162a87c 370 //pad.tone(1000.0,0.1);
ll14c4p 8:bd718162a87c 371 t_pos.x = rand() % 79;
ll14c4p 9:0f359bc0922f 372 t_pos.y = 0;
ll14c4p 10:df8ea4e747e2 373
ll14c4p 10:df8ea4e747e2 374 HPLost1 = HPLost1 - 1;
ll14c4p 10:df8ea4e747e2 375
ll14c4p 9:0f359bc0922f 376 }
ll14c4p 9:0f359bc0922f 377
ll14c4p 9:0f359bc0922f 378 if (
ll14c4p 9:0f359bc0922f 379 ((player_pos.y == tt_pos.y) ||
ll14c4p 9:0f359bc0922f 380 (player_pos.y == tt_pos.y + 1) ||
ll14c4p 9:0f359bc0922f 381 (player_pos.y == tt_pos.y + 2) ||
ll14c4p 9:0f359bc0922f 382 (player_pos.y == tt_pos.y + 3) ||
ll14c4p 9:0f359bc0922f 383 (player_pos.y == tt_pos.y + 4) ||
ll14c4p 9:0f359bc0922f 384 (player_pos.y == tt_pos.y + 5) ||
ll14c4p 9:0f359bc0922f 385 (player_pos.y == tt_pos.y + 6) ||
ll14c4p 9:0f359bc0922f 386 (player_pos.y == tt_pos.y + 7) ||
ll14c4p 9:0f359bc0922f 387 (player_pos.y + 4 == tt_pos.y) ||
ll14c4p 9:0f359bc0922f 388 (player_pos.y + 4 == tt_pos.y + 1) ||
ll14c4p 9:0f359bc0922f 389 (player_pos.y + 4 == tt_pos.y + 2) ||
ll14c4p 9:0f359bc0922f 390 (player_pos.y + 4 == tt_pos.y + 3) ||
ll14c4p 9:0f359bc0922f 391 (player_pos.y + 4 == tt_pos.y + 4) ||
ll14c4p 9:0f359bc0922f 392 (player_pos.y + 4 == tt_pos.y + 5) ||
ll14c4p 9:0f359bc0922f 393 (player_pos.y + 4 == tt_pos.y + 6) ||
ll14c4p 9:0f359bc0922f 394 (player_pos.y + 4 == tt_pos.y + 7)) &&
ll14c4p 9:0f359bc0922f 395 ((player_pos.x == tt_pos.x) ||
ll14c4p 9:0f359bc0922f 396 (player_pos.x == tt_pos.x + 1) ||
ll14c4p 9:0f359bc0922f 397 (player_pos.x == tt_pos.x + 2) ||
ll14c4p 9:0f359bc0922f 398 (player_pos.x == tt_pos.x + 3) ||
ll14c4p 9:0f359bc0922f 399 (player_pos.x == tt_pos.x + 4) ||
ll14c4p 9:0f359bc0922f 400 (player_pos.x == tt_pos.x + 5) ||
ll14c4p 9:0f359bc0922f 401 (player_pos.x == tt_pos.x + 6) ||
ll14c4p 9:0f359bc0922f 402 (player_pos.x == tt_pos.x + 7) ||
ll14c4p 9:0f359bc0922f 403 (player_pos.x == tt_pos.x + 8) ||
ll14c4p 9:0f359bc0922f 404 (player_pos.x == tt_pos.x + 9) ||
ll14c4p 9:0f359bc0922f 405 (player_pos.x == tt_pos.x + 10) ||
ll14c4p 9:0f359bc0922f 406 (player_pos.x + 5 == tt_pos.x) ||
ll14c4p 9:0f359bc0922f 407 (player_pos.x + 5 == tt_pos.x + 1) ||
ll14c4p 9:0f359bc0922f 408 (player_pos.x + 5 == tt_pos.x + 2) ||
ll14c4p 9:0f359bc0922f 409 (player_pos.x + 5 == tt_pos.x + 3) ||
ll14c4p 9:0f359bc0922f 410 (player_pos.x + 5 == tt_pos.x + 4) ||
ll14c4p 9:0f359bc0922f 411 (player_pos.x + 5 == tt_pos.x + 5) ||
ll14c4p 9:0f359bc0922f 412 (player_pos.x + 5 == tt_pos.x + 6) ||
ll14c4p 9:0f359bc0922f 413 (player_pos.x + 5 == tt_pos.x + 7) ||
ll14c4p 9:0f359bc0922f 414 (player_pos.x + 5 == tt_pos.x + 8) ||
ll14c4p 9:0f359bc0922f 415 (player_pos.x + 5 == tt_pos.x + 9) ||
ll14c4p 9:0f359bc0922f 416 (player_pos.x + 5 == tt_pos.x + 10))
ll14c4p 9:0f359bc0922f 417 ) {
ll14c4p 8:bd718162a87c 418
ll14c4p 10:df8ea4e747e2 419 //printf("collision working2 \n");
ll14c4p 9:0f359bc0922f 420 // audio feedback
ll14c4p 9:0f359bc0922f 421 //pad.tone(1000.0,0.1);
ll14c4p 9:0f359bc0922f 422 tt_pos.x = rand() % 79;
ll14c4p 9:0f359bc0922f 423 tt_pos.y = 0;
ll14c4p 10:df8ea4e747e2 424
ll14c4p 10:df8ea4e747e2 425 HPLost1 = HPLost1 - 1;
ll14c4p 10:df8ea4e747e2 426
ll14c4p 9:0f359bc0922f 427 }
ll14c4p 9:0f359bc0922f 428
ll14c4p 9:0f359bc0922f 429 if (
ll14c4p 9:0f359bc0922f 430 ((player_pos.y == ttt_pos.y) ||
ll14c4p 9:0f359bc0922f 431 (player_pos.y == ttt_pos.y + 1) ||
ll14c4p 9:0f359bc0922f 432 (player_pos.y == ttt_pos.y + 2) ||
ll14c4p 9:0f359bc0922f 433 (player_pos.y == ttt_pos.y + 3) ||
ll14c4p 9:0f359bc0922f 434 (player_pos.y == ttt_pos.y + 4) ||
ll14c4p 9:0f359bc0922f 435 (player_pos.y == ttt_pos.y + 5) ||
ll14c4p 9:0f359bc0922f 436 (player_pos.y == ttt_pos.y + 6) ||
ll14c4p 9:0f359bc0922f 437 (player_pos.y == ttt_pos.y + 7) ||
ll14c4p 9:0f359bc0922f 438 (player_pos.y + 4 == ttt_pos.y) ||
ll14c4p 9:0f359bc0922f 439 (player_pos.y + 4 == ttt_pos.y + 1) ||
ll14c4p 9:0f359bc0922f 440 (player_pos.y + 4 == ttt_pos.y + 2) ||
ll14c4p 9:0f359bc0922f 441 (player_pos.y + 4 == ttt_pos.y + 3) ||
ll14c4p 9:0f359bc0922f 442 (player_pos.y + 4 == ttt_pos.y + 4) ||
ll14c4p 9:0f359bc0922f 443 (player_pos.y + 4 == ttt_pos.y + 5) ||
ll14c4p 9:0f359bc0922f 444 (player_pos.y + 4 == ttt_pos.y + 6) ||
ll14c4p 9:0f359bc0922f 445 (player_pos.y + 4 == ttt_pos.y + 7)) &&
ll14c4p 9:0f359bc0922f 446 ((player_pos.x == ttt_pos.x) ||
ll14c4p 9:0f359bc0922f 447 (player_pos.x == ttt_pos.x + 1) ||
ll14c4p 9:0f359bc0922f 448 (player_pos.x == ttt_pos.x + 2) ||
ll14c4p 9:0f359bc0922f 449 (player_pos.x == ttt_pos.x + 3) ||
ll14c4p 9:0f359bc0922f 450 (player_pos.x == ttt_pos.x + 4) ||
ll14c4p 9:0f359bc0922f 451 (player_pos.x == ttt_pos.x + 5) ||
ll14c4p 9:0f359bc0922f 452 (player_pos.x == ttt_pos.x + 6) ||
ll14c4p 9:0f359bc0922f 453 (player_pos.x == ttt_pos.x + 7) ||
ll14c4p 9:0f359bc0922f 454 (player_pos.x == ttt_pos.x + 8) ||
ll14c4p 9:0f359bc0922f 455 (player_pos.x == ttt_pos.x + 9) ||
ll14c4p 9:0f359bc0922f 456 (player_pos.x == ttt_pos.x + 10) ||
ll14c4p 9:0f359bc0922f 457 (player_pos.x + 5 == ttt_pos.x) ||
ll14c4p 9:0f359bc0922f 458 (player_pos.x + 5 == ttt_pos.x + 1) ||
ll14c4p 9:0f359bc0922f 459 (player_pos.x + 5 == ttt_pos.x + 2) ||
ll14c4p 9:0f359bc0922f 460 (player_pos.x + 5 == ttt_pos.x + 3) ||
ll14c4p 9:0f359bc0922f 461 (player_pos.x + 5 == ttt_pos.x + 4) ||
ll14c4p 9:0f359bc0922f 462 (player_pos.x + 5 == ttt_pos.x + 5) ||
ll14c4p 9:0f359bc0922f 463 (player_pos.x + 5 == ttt_pos.x + 6) ||
ll14c4p 9:0f359bc0922f 464 (player_pos.x + 5 == ttt_pos.x + 7) ||
ll14c4p 9:0f359bc0922f 465 (player_pos.x + 5 == ttt_pos.x + 8) ||
ll14c4p 9:0f359bc0922f 466 (player_pos.x + 5 == ttt_pos.x + 9) ||
ll14c4p 9:0f359bc0922f 467 (player_pos.x + 5 == ttt_pos.x + 10))
ll14c4p 9:0f359bc0922f 468 ) {
ll14c4p 9:0f359bc0922f 469
ll14c4p 10:df8ea4e747e2 470 //printf("collision working1 \n");
ll14c4p 9:0f359bc0922f 471 // audio feedback
ll14c4p 9:0f359bc0922f 472 //pad.tone(1000.0,0.1);
ll14c4p 9:0f359bc0922f 473 ttt_pos.x = rand() % 79;
ll14c4p 9:0f359bc0922f 474 ttt_pos.y = 0;
ll14c4p 10:df8ea4e747e2 475
ll14c4p 10:df8ea4e747e2 476 HPLost1 = HPLost1 - 1;
ll14c4p 10:df8ea4e747e2 477
ll14c4p 8:bd718162a87c 478 }
ll14c4p 8:bd718162a87c 479
ll14c4p 10:df8ea4e747e2 480 //printf("%d", HPLost1); //Kind of working??
ll14c4p 8:bd718162a87c 481 _t.set_pos(t_pos);
ll14c4p 9:0f359bc0922f 482 _tt.set_pos(tt_pos);
ll14c4p 9:0f359bc0922f 483 _ttt.set_pos(ttt_pos);
ll14c4p 10:df8ea4e747e2 484 _hb.MinusHP1(HPLost1);
ll14c4p 8:bd718162a87c 485 }
ll14c4p 8:bd718162a87c 486
ll14c4p 8:bd718162a87c 487
ll14c4p 8:bd718162a87c 488
ll14c4p 8:bd718162a87c 489
ll14c4p 8:bd718162a87c 490
ll14c4p 8:bd718162a87c 491
ll14c4p 7:cf6304ef44fd 492
ll14c4p 7:cf6304ef44fd 493