Library containing the Game Engine

Committer:
ll14c4p
Date:
Wed May 03 13:01:09 2017 +0000
Revision:
8:bd718162a87c
Parent:
7:cf6304ef44fd
Child:
9:0f359bc0922f
Proj + Target Collision finished;

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 0:5997fa876927 15
ll14c4p 0:5997fa876927 16 }
ll14c4p 0:5997fa876927 17
ll14c4p 0:5997fa876927 18
ll14c4p 0:5997fa876927 19
ll14c4p 0:5997fa876927 20 void GameEngine::read_input(Gamepad &pad)
ll14c4p 0:5997fa876927 21 {
ll14c4p 0:5997fa876927 22 _d = pad.get_direction();
ll14c4p 0:5997fa876927 23 _mag = pad.get_mag();
ll14c4p 0:5997fa876927 24 }
ll14c4p 0:5997fa876927 25
ll14c4p 8:bd718162a87c 26 void GameEngine::draw(N5110 &lcd, Gamepad &pad)
ll14c4p 0:5997fa876927 27 {
ll14c4p 0:5997fa876927 28 _p.draw(lcd);
ll14c4p 8:bd718162a87c 29 /*while ( pad.check_event(Gamepad::A_PRESSED) == true) {
ll14c4p 8:bd718162a87c 30 _proj.draw(lcd);
ll14c4p 8:bd718162a87c 31 }*/
ll14c4p 3:2f8f003ce4fd 32 _proj.draw(lcd);
ll14c4p 6:c710fbc0f48e 33 _t.draw(lcd);
ll14c4p 8:bd718162a87c 34 _tt.draw(lcd);
ll14c4p 8:bd718162a87c 35 _ttt.draw(lcd);
ll14c4p 0:5997fa876927 36 }
ll14c4p 0:5997fa876927 37
ll14c4p 3:2f8f003ce4fd 38
ll14c4p 0:5997fa876927 39 void GameEngine::update(Gamepad &pad)
ll14c4p 0:5997fa876927 40 {
ll14c4p 0:5997fa876927 41 _p.update(_d,_mag);
ll14c4p 3:2f8f003ce4fd 42 _proj.update();
ll14c4p 6:c710fbc0f48e 43 _t.update();
ll14c4p 8:bd718162a87c 44 _tt.update();
ll14c4p 8:bd718162a87c 45 _ttt.update();
ll14c4p 7:cf6304ef44fd 46 CheckProjTargetCollision(pad);
ll14c4p 8:bd718162a87c 47 CheckPlayerTargetCollision(pad);
ll14c4p 0:5997fa876927 48 }
ll14c4p 1:13a97de95e46 49
ll14c4p 1:13a97de95e46 50 void GameEngine::get_pos()
ll14c4p 1:13a97de95e46 51 {
ll14c4p 1:13a97de95e46 52 Vector2D player_pos = _p.get_pos();
ll14c4p 5:6224122fc07c 53 //printf("player pos = %f %f \n", player_pos.x, player_pos.y); //top left of player sprite
ll14c4p 4:e78f5bcddb01 54 // 81.000000 0.000000 top right
ll14c4p 4:e78f5bcddb01 55 // 0.000000 0.000000 is top left
ll14c4p 4:e78f5bcddb01 56 // 81.000000 45.000000 bottom right
ll14c4p 4:e78f5bcddb01 57 Vector2D proj_pos = _proj.get_pos();
ll14c4p 5:6224122fc07c 58 //printf("proj pos = %f %f \n", proj_pos.x, proj_pos.y);
ll14c4p 5:6224122fc07c 59
ll14c4p 5:6224122fc07c 60 playerx = player_pos.x;
ll14c4p 5:6224122fc07c 61 playery = player_pos.y;
ll14c4p 7:cf6304ef44fd 62 //printf("playerxy in GAME = %d %d \n", playerx, playery);
ll14c4p 5:6224122fc07c 63 _proj.init(playerx,playery);
ll14c4p 1:13a97de95e46 64
ll14c4p 7:cf6304ef44fd 65 }
ll14c4p 7:cf6304ef44fd 66
ll14c4p 6:c710fbc0f48e 67
ll14c4p 6:c710fbc0f48e 68
ll14c4p 7:cf6304ef44fd 69 void GameEngine::CheckProjTargetCollision(Gamepad &pad)
ll14c4p 7:cf6304ef44fd 70 {
ll14c4p 7:cf6304ef44fd 71 Vector2D proj_pos = _proj.get_pos();
ll14c4p 7:cf6304ef44fd 72 Vector2D t_pos = _t.get_pos();
ll14c4p 8:bd718162a87c 73 Vector2D tt_pos = _tt.get_pos();
ll14c4p 8:bd718162a87c 74 Vector2D ttt_pos = _ttt.get_pos();
ll14c4p 8:bd718162a87c 75
ll14c4p 7:cf6304ef44fd 76 Vector2D player_pos = _p.get_pos();
ll14c4p 8:bd718162a87c 77
ll14c4p 7:cf6304ef44fd 78 // printf("proj %f %f \n", proj_pos.x, proj_pos.y);
ll14c4p 7:cf6304ef44fd 79 //printf("targ %f %f \n", t_pos.x, t_pos.y);
ll14c4p 7:cf6304ef44fd 80
ll14c4p 7:cf6304ef44fd 81 if (
ll14c4p 7:cf6304ef44fd 82 ((proj_pos.y == t_pos.y) ||
ll14c4p 7:cf6304ef44fd 83 (proj_pos.y == t_pos.y + 1) ||
ll14c4p 7:cf6304ef44fd 84 (proj_pos.y == t_pos.y + 2) ||
ll14c4p 7:cf6304ef44fd 85 (proj_pos.y == t_pos.y + 3) ||
ll14c4p 8:bd718162a87c 86 (proj_pos.y == t_pos.y + 4) ||
ll14c4p 8:bd718162a87c 87 (proj_pos.y == t_pos.y + 5) ||
ll14c4p 8:bd718162a87c 88 (proj_pos.y == t_pos.y + 6) ||
ll14c4p 8:bd718162a87c 89 (proj_pos.y == t_pos.y + 7) ||
ll14c4p 8:bd718162a87c 90 (proj_pos.y + 1 == t_pos.y) ||
ll14c4p 8:bd718162a87c 91 (proj_pos.y + 1 == t_pos.y + 1) ||
ll14c4p 8:bd718162a87c 92 (proj_pos.y + 1 == t_pos.y + 2) ||
ll14c4p 8:bd718162a87c 93 (proj_pos.y + 1 == t_pos.y + 3) ||
ll14c4p 8:bd718162a87c 94 (proj_pos.y + 1 == t_pos.y + 4) ||
ll14c4p 8:bd718162a87c 95 (proj_pos.y + 1 == t_pos.y + 5) ||
ll14c4p 8:bd718162a87c 96 (proj_pos.y + 1 == t_pos.y + 6) ||
ll14c4p 8:bd718162a87c 97 (proj_pos.y + 1 == t_pos.y + 7)) &&
ll14c4p 7:cf6304ef44fd 98 ((proj_pos.x == t_pos.x) ||
ll14c4p 7:cf6304ef44fd 99 (proj_pos.x == t_pos.x + 1) ||
ll14c4p 7:cf6304ef44fd 100 (proj_pos.x == t_pos.x + 2) ||
ll14c4p 7:cf6304ef44fd 101 (proj_pos.x == t_pos.x + 3) ||
ll14c4p 8:bd718162a87c 102 (proj_pos.x == t_pos.x + 4) ||
ll14c4p 8:bd718162a87c 103 (proj_pos.x == t_pos.x + 5) ||
ll14c4p 8:bd718162a87c 104 (proj_pos.x == t_pos.x + 6) ||
ll14c4p 8:bd718162a87c 105 (proj_pos.x == t_pos.x + 7) ||
ll14c4p 8:bd718162a87c 106 (proj_pos.x + 1 == t_pos.x) ||
ll14c4p 8:bd718162a87c 107 (proj_pos.x + 1 == t_pos.x + 1) ||
ll14c4p 8:bd718162a87c 108 (proj_pos.x + 1 == t_pos.x + 2) ||
ll14c4p 8:bd718162a87c 109 (proj_pos.x + 1 == t_pos.x + 3) ||
ll14c4p 8:bd718162a87c 110 (proj_pos.x + 1 == t_pos.x + 4) ||
ll14c4p 8:bd718162a87c 111 (proj_pos.x + 1 == t_pos.x + 5) ||
ll14c4p 8:bd718162a87c 112 (proj_pos.x + 1 == t_pos.x + 6) ||
ll14c4p 8:bd718162a87c 113 (proj_pos.x + 1 == t_pos.x + 7) ||
ll14c4p 8:bd718162a87c 114 (proj_pos.x + 1 == t_pos.x + 8) ||
ll14c4p 8:bd718162a87c 115 (proj_pos.x + 1 == t_pos.x + 9) ||
ll14c4p 8:bd718162a87c 116 (proj_pos.x + 1 == t_pos.x + 10))
ll14c4p 7:cf6304ef44fd 117 ) {
ll14c4p 7:cf6304ef44fd 118
ll14c4p 8:bd718162a87c 119 //printf("projtarget working \n");
ll14c4p 8:bd718162a87c 120 proj_pos.x = player_pos.x +2;
ll14c4p 8:bd718162a87c 121 proj_pos.y = player_pos.y;
ll14c4p 7:cf6304ef44fd 122 t_pos.x = rand() % 79;
ll14c4p 7:cf6304ef44fd 123 t_pos.y = 0;
ll14c4p 7:cf6304ef44fd 124 // audio feedback
ll14c4p 7:cf6304ef44fd 125 //pad.tone(1000.0,0.1);
ll14c4p 7:cf6304ef44fd 126 }
ll14c4p 8:bd718162a87c 127
ll14c4p 8:bd718162a87c 128 if (
ll14c4p 8:bd718162a87c 129 ((proj_pos.y == tt_pos.y) ||
ll14c4p 8:bd718162a87c 130 (proj_pos.y == tt_pos.y + 1) ||
ll14c4p 8:bd718162a87c 131 (proj_pos.y == tt_pos.y + 2) ||
ll14c4p 8:bd718162a87c 132 (proj_pos.y == tt_pos.y + 3) ||
ll14c4p 8:bd718162a87c 133 (proj_pos.y == tt_pos.y + 4) ||
ll14c4p 8:bd718162a87c 134 (proj_pos.y == tt_pos.y + 5) ||
ll14c4p 8:bd718162a87c 135 (proj_pos.y == tt_pos.y + 6) ||
ll14c4p 8:bd718162a87c 136 (proj_pos.y == tt_pos.y + 7) ||
ll14c4p 8:bd718162a87c 137 (proj_pos.y + 1 == tt_pos.y) ||
ll14c4p 8:bd718162a87c 138 (proj_pos.y + 1 == tt_pos.y + 1) ||
ll14c4p 8:bd718162a87c 139 (proj_pos.y + 1 == tt_pos.y + 2) ||
ll14c4p 8:bd718162a87c 140 (proj_pos.y + 1 == tt_pos.y + 3) ||
ll14c4p 8:bd718162a87c 141 (proj_pos.y + 1 == tt_pos.y + 4) ||
ll14c4p 8:bd718162a87c 142 (proj_pos.y + 1 == tt_pos.y + 5) ||
ll14c4p 8:bd718162a87c 143 (proj_pos.y + 1 == tt_pos.y + 6) ||
ll14c4p 8:bd718162a87c 144 (proj_pos.y + 1 == tt_pos.y + 7)) &&
ll14c4p 8:bd718162a87c 145 ((proj_pos.x == tt_pos.x) ||
ll14c4p 8:bd718162a87c 146 (proj_pos.x == tt_pos.x + 1) ||
ll14c4p 8:bd718162a87c 147 (proj_pos.x == tt_pos.x + 2) ||
ll14c4p 8:bd718162a87c 148 (proj_pos.x == tt_pos.x + 3) ||
ll14c4p 8:bd718162a87c 149 (proj_pos.x == tt_pos.x + 4) ||
ll14c4p 8:bd718162a87c 150 (proj_pos.x == tt_pos.x + 5) ||
ll14c4p 8:bd718162a87c 151 (proj_pos.x == tt_pos.x + 6) ||
ll14c4p 8:bd718162a87c 152 (proj_pos.x == tt_pos.x + 7) ||
ll14c4p 8:bd718162a87c 153 (proj_pos.x + 1 == tt_pos.x) ||
ll14c4p 8:bd718162a87c 154 (proj_pos.x + 1 == tt_pos.x + 1) ||
ll14c4p 8:bd718162a87c 155 (proj_pos.x + 1 == tt_pos.x + 2) ||
ll14c4p 8:bd718162a87c 156 (proj_pos.x + 1 == tt_pos.x + 3) ||
ll14c4p 8:bd718162a87c 157 (proj_pos.x + 1 == tt_pos.x + 4) ||
ll14c4p 8:bd718162a87c 158 (proj_pos.x + 1 == tt_pos.x + 5) ||
ll14c4p 8:bd718162a87c 159 (proj_pos.x + 1 == tt_pos.x + 6) ||
ll14c4p 8:bd718162a87c 160 (proj_pos.x + 1 == tt_pos.x + 7) ||
ll14c4p 8:bd718162a87c 161 (proj_pos.x + 1 == tt_pos.x + 8) ||
ll14c4p 8:bd718162a87c 162 (proj_pos.x + 1 == tt_pos.x + 9) ||
ll14c4p 8:bd718162a87c 163 (proj_pos.x + 1 == tt_pos.x + 10))
ll14c4p 8:bd718162a87c 164 ) {
ll14c4p 8:bd718162a87c 165
ll14c4p 8:bd718162a87c 166 //printf("projtarget working \n");
ll14c4p 8:bd718162a87c 167 proj_pos.x = player_pos.x +2;
ll14c4p 8:bd718162a87c 168 proj_pos.y = player_pos.y;
ll14c4p 8:bd718162a87c 169 tt_pos.x = rand() % 79;
ll14c4p 8:bd718162a87c 170 tt_pos.y = 0;
ll14c4p 8:bd718162a87c 171 // audio feedback
ll14c4p 8:bd718162a87c 172 //pad.tone(1000.0,0.1);
ll14c4p 8:bd718162a87c 173 }
ll14c4p 8:bd718162a87c 174
ll14c4p 8:bd718162a87c 175 if (
ll14c4p 8:bd718162a87c 176 ((proj_pos.y == ttt_pos.y) ||
ll14c4p 8:bd718162a87c 177 (proj_pos.y == ttt_pos.y + 1) ||
ll14c4p 8:bd718162a87c 178 (proj_pos.y == ttt_pos.y + 2) ||
ll14c4p 8:bd718162a87c 179 (proj_pos.y == ttt_pos.y + 3) ||
ll14c4p 8:bd718162a87c 180 (proj_pos.y == ttt_pos.y + 4) ||
ll14c4p 8:bd718162a87c 181 (proj_pos.y == ttt_pos.y + 5) ||
ll14c4p 8:bd718162a87c 182 (proj_pos.y == ttt_pos.y + 6) ||
ll14c4p 8:bd718162a87c 183 (proj_pos.y == ttt_pos.y + 7) ||
ll14c4p 8:bd718162a87c 184 (proj_pos.y + 1 == ttt_pos.y) ||
ll14c4p 8:bd718162a87c 185 (proj_pos.y + 1 == ttt_pos.y + 1) ||
ll14c4p 8:bd718162a87c 186 (proj_pos.y + 1 == ttt_pos.y + 2) ||
ll14c4p 8:bd718162a87c 187 (proj_pos.y + 1 == ttt_pos.y + 3) ||
ll14c4p 8:bd718162a87c 188 (proj_pos.y + 1 == ttt_pos.y + 4) ||
ll14c4p 8:bd718162a87c 189 (proj_pos.y + 1 == ttt_pos.y + 5) ||
ll14c4p 8:bd718162a87c 190 (proj_pos.y + 1 == ttt_pos.y + 6) ||
ll14c4p 8:bd718162a87c 191 (proj_pos.y + 1 == ttt_pos.y + 7)) &&
ll14c4p 8:bd718162a87c 192 ((proj_pos.x == ttt_pos.x) ||
ll14c4p 8:bd718162a87c 193 (proj_pos.x == ttt_pos.x + 1) ||
ll14c4p 8:bd718162a87c 194 (proj_pos.x == ttt_pos.x + 2) ||
ll14c4p 8:bd718162a87c 195 (proj_pos.x == ttt_pos.x + 3) ||
ll14c4p 8:bd718162a87c 196 (proj_pos.x == ttt_pos.x + 4) ||
ll14c4p 8:bd718162a87c 197 (proj_pos.x == ttt_pos.x + 5) ||
ll14c4p 8:bd718162a87c 198 (proj_pos.x == ttt_pos.x + 6) ||
ll14c4p 8:bd718162a87c 199 (proj_pos.x == ttt_pos.x + 7) ||
ll14c4p 8:bd718162a87c 200 (proj_pos.x + 1 == ttt_pos.x) ||
ll14c4p 8:bd718162a87c 201 (proj_pos.x + 1 == ttt_pos.x + 1) ||
ll14c4p 8:bd718162a87c 202 (proj_pos.x + 1 == ttt_pos.x + 2) ||
ll14c4p 8:bd718162a87c 203 (proj_pos.x + 1 == ttt_pos.x + 3) ||
ll14c4p 8:bd718162a87c 204 (proj_pos.x + 1 == ttt_pos.x + 4) ||
ll14c4p 8:bd718162a87c 205 (proj_pos.x + 1 == ttt_pos.x + 5) ||
ll14c4p 8:bd718162a87c 206 (proj_pos.x + 1 == ttt_pos.x + 6) ||
ll14c4p 8:bd718162a87c 207 (proj_pos.x + 1 == ttt_pos.x + 7) ||
ll14c4p 8:bd718162a87c 208 (proj_pos.x + 1 == ttt_pos.x + 8) ||
ll14c4p 8:bd718162a87c 209 (proj_pos.x + 1 == ttt_pos.x + 9) ||
ll14c4p 8:bd718162a87c 210 (proj_pos.x + 1 == ttt_pos.x + 10))
ll14c4p 8:bd718162a87c 211 ) {
ll14c4p 8:bd718162a87c 212
ll14c4p 8:bd718162a87c 213 //printf("projtarget working \n");
ll14c4p 8:bd718162a87c 214 proj_pos.x = player_pos.x +2;
ll14c4p 8:bd718162a87c 215 proj_pos.y = player_pos.y;
ll14c4p 8:bd718162a87c 216 ttt_pos.x = rand() % 79;
ll14c4p 8:bd718162a87c 217 ttt_pos.y = 0;
ll14c4p 8:bd718162a87c 218 // audio feedback
ll14c4p 8:bd718162a87c 219 //pad.tone(1000.0,0.1);
ll14c4p 8:bd718162a87c 220 }
ll14c4p 8:bd718162a87c 221
ll14c4p 7:cf6304ef44fd 222
ll14c4p 7:cf6304ef44fd 223 _proj.set_pos(proj_pos);
ll14c4p 7:cf6304ef44fd 224 _t.set_pos(t_pos);
ll14c4p 8:bd718162a87c 225 _tt.set_pos(tt_pos);
ll14c4p 8:bd718162a87c 226 _ttt.set_pos(ttt_pos);
ll14c4p 8:bd718162a87c 227
ll14c4p 7:cf6304ef44fd 228
ll14c4p 7:cf6304ef44fd 229 }
ll14c4p 7:cf6304ef44fd 230
ll14c4p 7:cf6304ef44fd 231
ll14c4p 7:cf6304ef44fd 232
ll14c4p 7:cf6304ef44fd 233
ll14c4p 7:cf6304ef44fd 234
ll14c4p 8:bd718162a87c 235 void GameEngine::CheckPlayerTargetCollision(Gamepad &pad)
ll14c4p 8:bd718162a87c 236 {
ll14c4p 8:bd718162a87c 237 Vector2D t_pos = _t.get_pos();
ll14c4p 8:bd718162a87c 238 Vector2D player_pos = _p.get_pos();
ll14c4p 8:bd718162a87c 239
ll14c4p 8:bd718162a87c 240
ll14c4p 8:bd718162a87c 241 if (
ll14c4p 8:bd718162a87c 242 ((player_pos.y == t_pos.y) ||
ll14c4p 8:bd718162a87c 243 (player_pos.y == t_pos.y + 1) ||
ll14c4p 8:bd718162a87c 244 (player_pos.y == t_pos.y + 2) ||
ll14c4p 8:bd718162a87c 245 (player_pos.y == t_pos.y + 3) ||
ll14c4p 8:bd718162a87c 246 (player_pos.y == t_pos.y + 4) ||
ll14c4p 8:bd718162a87c 247
ll14c4p 8:bd718162a87c 248 (player_pos.y +2 == t_pos.y) ||
ll14c4p 8:bd718162a87c 249 (player_pos.y +2 == t_pos.y + 1) ||
ll14c4p 8:bd718162a87c 250 (player_pos.y +2 == t_pos.y + 2) ||
ll14c4p 8:bd718162a87c 251 (player_pos.y +2 == t_pos.y + 3) ||
ll14c4p 8:bd718162a87c 252 (player_pos.y +2 == t_pos.y + 4)) &&
ll14c4p 8:bd718162a87c 253 ((player_pos.x == t_pos.x) ||
ll14c4p 8:bd718162a87c 254 (player_pos.x == t_pos.x + 1) ||
ll14c4p 8:bd718162a87c 255 (player_pos.x == t_pos.x + 2) ||
ll14c4p 8:bd718162a87c 256 (player_pos.x == t_pos.x + 3) ||
ll14c4p 8:bd718162a87c 257 (player_pos.x == t_pos.x + 4) ||
ll14c4p 8:bd718162a87c 258
ll14c4p 8:bd718162a87c 259 (player_pos.x +2 == t_pos.x) ||
ll14c4p 8:bd718162a87c 260 (player_pos.x +2 == t_pos.x + 1) ||
ll14c4p 8:bd718162a87c 261 (player_pos.x +2 == t_pos.x + 2) ||
ll14c4p 8:bd718162a87c 262 (player_pos.x +2 == t_pos.x + 3) ||
ll14c4p 8:bd718162a87c 263 (player_pos.x +2 == t_pos.x + 4))
ll14c4p 8:bd718162a87c 264 ) {
ll14c4p 8:bd718162a87c 265
ll14c4p 8:bd718162a87c 266 //printf("collision working \n");
ll14c4p 8:bd718162a87c 267 // audio feedback
ll14c4p 8:bd718162a87c 268 //pad.tone(1000.0,0.1);
ll14c4p 8:bd718162a87c 269 t_pos.x = rand() % 79;
ll14c4p 8:bd718162a87c 270 t_pos.y = 20;
ll14c4p 8:bd718162a87c 271
ll14c4p 8:bd718162a87c 272 }
ll14c4p 8:bd718162a87c 273
ll14c4p 8:bd718162a87c 274 _t.set_pos(t_pos);
ll14c4p 8:bd718162a87c 275
ll14c4p 8:bd718162a87c 276
ll14c4p 8:bd718162a87c 277 }
ll14c4p 8:bd718162a87c 278
ll14c4p 8:bd718162a87c 279
ll14c4p 8:bd718162a87c 280
ll14c4p 8:bd718162a87c 281
ll14c4p 8:bd718162a87c 282
ll14c4p 8:bd718162a87c 283
ll14c4p 7:cf6304ef44fd 284
ll14c4p 7:cf6304ef44fd 285