Library containing the Game Engine

Committer:
ll14c4p
Date:
Thu May 04 11:46:33 2017 +0000
Revision:
14:84d2f115062e
Parent:
13:63013a418903
Bugfixes

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