Library containing the Game Engine

Committer:
ll14c4p
Date:
Thu May 04 09:54:21 2017 +0000
Revision:
12:6eeb06ed7c6b
Parent:
11:832eb031310b
Child:
13:63013a418903
Added Score + Updated Losing screen

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