Library containing the Game Engine
GameEngine.cpp@14:84d2f115062e, 2017-05-04 (annotated)
- Committer:
- ll14c4p
- Date:
- Thu May 04 11:46:33 2017 +0000
- Revision:
- 14:84d2f115062e
- Parent:
- 13:63013a418903
Bugfixes
Who changed what in which revision?
User | Revision | Line number | New 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 |