Library containing the Game Engine
GameEngine.cpp@11:832eb031310b, 2017-05-04 (annotated)
- 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?
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 | 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 |