Library containing the Game Engine
GameEngine.cpp@7:cf6304ef44fd, 2017-05-02 (annotated)
- Committer:
- ll14c4p
- Date:
- Tue May 02 16:25:26 2017 +0000
- Revision:
- 7:cf6304ef44fd
- Parent:
- 6:c710fbc0f48e
- Child:
- 8:bd718162a87c
Added new function to check projectile and target collision
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 | 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 | 0:5997fa876927 | 26 | void GameEngine::draw(N5110 &lcd) |
ll14c4p | 0:5997fa876927 | 27 | { |
ll14c4p | 0:5997fa876927 | 28 | // draw the elements in the LCD buffer |
ll14c4p | 0:5997fa876927 | 29 | // player |
ll14c4p | 0:5997fa876927 | 30 | _p.draw(lcd); |
ll14c4p | 3:2f8f003ce4fd | 31 | _proj.draw(lcd); |
ll14c4p | 6:c710fbc0f48e | 32 | _t.draw(lcd); |
ll14c4p | 0:5997fa876927 | 33 | } |
ll14c4p | 0:5997fa876927 | 34 | |
ll14c4p | 3:2f8f003ce4fd | 35 | |
ll14c4p | 0:5997fa876927 | 36 | void GameEngine::update(Gamepad &pad) |
ll14c4p | 0:5997fa876927 | 37 | { |
ll14c4p | 0:5997fa876927 | 38 | _p.update(_d,_mag); |
ll14c4p | 3:2f8f003ce4fd | 39 | _proj.update(); |
ll14c4p | 6:c710fbc0f48e | 40 | _t.update(); |
ll14c4p | 7:cf6304ef44fd | 41 | CheckProjTargetCollision(pad); |
ll14c4p | 0:5997fa876927 | 42 | } |
ll14c4p | 1:13a97de95e46 | 43 | |
ll14c4p | 1:13a97de95e46 | 44 | void GameEngine::get_pos() |
ll14c4p | 1:13a97de95e46 | 45 | { |
ll14c4p | 1:13a97de95e46 | 46 | Vector2D player_pos = _p.get_pos(); |
ll14c4p | 5:6224122fc07c | 47 | //printf("player pos = %f %f \n", player_pos.x, player_pos.y); //top left of player sprite |
ll14c4p | 4:e78f5bcddb01 | 48 | // 81.000000 0.000000 top right |
ll14c4p | 4:e78f5bcddb01 | 49 | // 0.000000 0.000000 is top left |
ll14c4p | 4:e78f5bcddb01 | 50 | // 81.000000 45.000000 bottom right |
ll14c4p | 4:e78f5bcddb01 | 51 | Vector2D proj_pos = _proj.get_pos(); |
ll14c4p | 5:6224122fc07c | 52 | //printf("proj pos = %f %f \n", proj_pos.x, proj_pos.y); |
ll14c4p | 5:6224122fc07c | 53 | |
ll14c4p | 5:6224122fc07c | 54 | playerx = player_pos.x; |
ll14c4p | 5:6224122fc07c | 55 | playery = player_pos.y; |
ll14c4p | 7:cf6304ef44fd | 56 | //printf("playerxy in GAME = %d %d \n", playerx, playery); |
ll14c4p | 5:6224122fc07c | 57 | _proj.init(playerx,playery); |
ll14c4p | 1:13a97de95e46 | 58 | |
ll14c4p | 7:cf6304ef44fd | 59 | } |
ll14c4p | 7:cf6304ef44fd | 60 | |
ll14c4p | 6:c710fbc0f48e | 61 | |
ll14c4p | 6:c710fbc0f48e | 62 | |
ll14c4p | 7:cf6304ef44fd | 63 | void GameEngine::CheckProjTargetCollision(Gamepad &pad) |
ll14c4p | 7:cf6304ef44fd | 64 | { |
ll14c4p | 7:cf6304ef44fd | 65 | Vector2D proj_pos = _proj.get_pos(); |
ll14c4p | 7:cf6304ef44fd | 66 | Vector2D t_pos = _t.get_pos(); |
ll14c4p | 7:cf6304ef44fd | 67 | Vector2D player_pos = _p.get_pos(); |
ll14c4p | 7:cf6304ef44fd | 68 | // printf("proj %f %f \n", proj_pos.x, proj_pos.y); |
ll14c4p | 7:cf6304ef44fd | 69 | //printf("targ %f %f \n", t_pos.x, t_pos.y); |
ll14c4p | 7:cf6304ef44fd | 70 | |
ll14c4p | 7:cf6304ef44fd | 71 | if ( |
ll14c4p | 7:cf6304ef44fd | 72 | ((proj_pos.y == t_pos.y) || |
ll14c4p | 7:cf6304ef44fd | 73 | (proj_pos.y == t_pos.y + 1) || |
ll14c4p | 7:cf6304ef44fd | 74 | (proj_pos.y == t_pos.y + 2) || |
ll14c4p | 7:cf6304ef44fd | 75 | (proj_pos.y == t_pos.y + 3) || |
ll14c4p | 7:cf6304ef44fd | 76 | (proj_pos.y == t_pos.y + 4)) && |
ll14c4p | 7:cf6304ef44fd | 77 | ((proj_pos.x == t_pos.x) || |
ll14c4p | 7:cf6304ef44fd | 78 | (proj_pos.x == t_pos.x + 1) || |
ll14c4p | 7:cf6304ef44fd | 79 | (proj_pos.x == t_pos.x + 2) || |
ll14c4p | 7:cf6304ef44fd | 80 | (proj_pos.x == t_pos.x + 3) || |
ll14c4p | 7:cf6304ef44fd | 81 | (proj_pos.x == t_pos.x + 4)) |
ll14c4p | 7:cf6304ef44fd | 82 | ) { |
ll14c4p | 7:cf6304ef44fd | 83 | |
ll14c4p | 7:cf6304ef44fd | 84 | printf("yeaaaaaaaaaaaaah boiiiiiiiiiiii \n"); |
ll14c4p | 7:cf6304ef44fd | 85 | proj_pos.x = player_pos.x +1; |
ll14c4p | 7:cf6304ef44fd | 86 | proj_pos.y = player_pos.y +1; |
ll14c4p | 7:cf6304ef44fd | 87 | t_pos.x = rand() % 79; |
ll14c4p | 7:cf6304ef44fd | 88 | t_pos.y = 0; |
ll14c4p | 7:cf6304ef44fd | 89 | // audio feedback |
ll14c4p | 7:cf6304ef44fd | 90 | //pad.tone(1000.0,0.1); |
ll14c4p | 7:cf6304ef44fd | 91 | } |
ll14c4p | 7:cf6304ef44fd | 92 | |
ll14c4p | 7:cf6304ef44fd | 93 | _proj.set_pos(proj_pos); |
ll14c4p | 7:cf6304ef44fd | 94 | _t.set_pos(t_pos); |
ll14c4p | 7:cf6304ef44fd | 95 | |
ll14c4p | 7:cf6304ef44fd | 96 | |
ll14c4p | 7:cf6304ef44fd | 97 | } |
ll14c4p | 7:cf6304ef44fd | 98 | |
ll14c4p | 7:cf6304ef44fd | 99 | |
ll14c4p | 7:cf6304ef44fd | 100 | |
ll14c4p | 7:cf6304ef44fd | 101 | |
ll14c4p | 7:cf6304ef44fd | 102 | |
ll14c4p | 7:cf6304ef44fd | 103 | |
ll14c4p | 7:cf6304ef44fd | 104 |