Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Gameengine/Gameengine.cpp@37:4d525a37d5d2, 2019-04-12 (annotated)
- Committer:
- el17arm
- Date:
- Fri Apr 12 18:10:11 2019 +0000
- Revision:
- 37:4d525a37d5d2
- Parent:
- 36:203ec93b4cc7
- Child:
- 38:55bb9da08a52
started using structs in Level1 class to build level, far more efficient and presenetable
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| el17arm | 29:d85886364643 | 1 | #include "Gameengine.h" |
| el17arm | 29:d85886364643 | 2 | |
| el17arm | 29:d85886364643 | 3 | Gameengine::Gameengine() |
| el17arm | 29:d85886364643 | 4 | { |
| el17arm | 29:d85886364643 | 5 | _turn_flag = 0; |
| el17arm | 29:d85886364643 | 6 | _counter =0; |
| el17arm | 29:d85886364643 | 7 | } |
| el17arm | 29:d85886364643 | 8 | |
| el17arm | 29:d85886364643 | 9 | Gameengine::~Gameengine() |
| el17arm | 29:d85886364643 | 10 | { |
| el17arm | 29:d85886364643 | 11 | } |
| el17arm | 29:d85886364643 | 12 | |
| el17arm | 29:d85886364643 | 13 | void Gameengine::game_init() |
| el17arm | 29:d85886364643 | 14 | { |
| el17arm | 29:d85886364643 | 15 | _level_select = 1; |
| el17arm | 33:023f57d52b1c | 16 | _sprites.miner_init(3, 33); |
| el17arm | 33:023f57d52b1c | 17 | _sprites.enemy_init(1, 22, 42, 40); |
| el17arm | 33:023f57d52b1c | 18 | _sprites.enemy_init(0, 22, 20, 40); |
| el17arm | 29:d85886364643 | 19 | _lives = 3; |
| el17arm | 29:d85886364643 | 20 | } |
| el17arm | 29:d85886364643 | 21 | |
| el17arm | 37:4d525a37d5d2 | 22 | void Gameengine::get_miner_pos() |
| el17arm | 29:d85886364643 | 23 | { |
| el17arm | 37:4d525a37d5d2 | 24 | Vector2D p = _sprites.get_pos(); |
| el17arm | 37:4d525a37d5d2 | 25 | } |
| el17arm | 29:d85886364643 | 26 | |
| el17arm | 29:d85886364643 | 27 | void Gameengine::read_direction(Gamepad &pad) |
| el17arm | 29:d85886364643 | 28 | { |
| el17arm | 29:d85886364643 | 29 | _d = pad.get_direction(); |
| el17arm | 29:d85886364643 | 30 | } |
| el17arm | 29:d85886364643 | 31 | |
| el17arm | 29:d85886364643 | 32 | void Gameengine::update(N5110 &lcd, Gamepad &pad) |
| el17arm | 29:d85886364643 | 33 | { |
| el17arm | 29:d85886364643 | 34 | t.start(); |
| el17arm | 29:d85886364643 | 35 | read_direction(pad); |
| el17arm | 37:4d525a37d5d2 | 36 | get_miner_pos(); |
| el17arm | 33:023f57d52b1c | 37 | _sprites.miner_move(_d, lcd); |
| el17arm | 33:023f57d52b1c | 38 | _sprites.miner_gravity(lcd); |
| el17arm | 33:023f57d52b1c | 39 | _sprites.miner_jump(lcd, pad); |
| el17arm | 33:023f57d52b1c | 40 | _sprites.miner_land(lcd); |
| el17arm | 29:d85886364643 | 41 | lose_life(lcd); |
| el17arm | 29:d85886364643 | 42 | game_over(); |
| el17arm | 29:d85886364643 | 43 | next_level(lcd); |
| el17arm | 34:c5a042973e0c | 44 | |
| el17arm | 33:023f57d52b1c | 45 | _sprites.enemy_move(0, 0.5, lcd); |
| el17arm | 33:023f57d52b1c | 46 | _sprites.enemy_move(1, 1, lcd); |
| el17arm | 34:c5a042973e0c | 47 | |
| el17arm | 29:d85886364643 | 48 | } |
| el17arm | 29:d85886364643 | 49 | |
| el17arm | 37:4d525a37d5d2 | 50 | void Gameengine::draw(N5110 &lcd, Gamepad &pad) |
| el17arm | 29:d85886364643 | 51 | { |
| el17arm | 29:d85886364643 | 52 | if (_level_select == 1) { |
| el17arm | 34:c5a042973e0c | 53 | |
| el17arm | 37:4d525a37d5d2 | 54 | _l1.trap_pos(); |
| el17arm | 37:4d525a37d5d2 | 55 | _l1.key_pos(); |
| el17arm | 33:023f57d52b1c | 56 | _sprites.enemy_collision(0); |
| el17arm | 33:023f57d52b1c | 57 | _sprites.enemy_collision(1); |
| el17arm | 33:023f57d52b1c | 58 | _sprites.miner_draw(lcd); |
| el17arm | 29:d85886364643 | 59 | _l1.level_platforms(lcd); |
| el17arm | 29:d85886364643 | 60 | _l1.soft_blocks(lcd); |
| el17arm | 36:203ec93b4cc7 | 61 | _sprites.blocks(_d, 1,49,36, lcd); |
| el17arm | 36:203ec93b4cc7 | 62 | _sprites.blocks(_d, 0,42,22, lcd); |
| el17arm | 34:c5a042973e0c | 63 | _sprites.keys_collected(); |
| el17arm | 37:4d525a37d5d2 | 64 | key_draw(lcd, pad); |
| el17arm | 29:d85886364643 | 65 | |
| el17arm | 29:d85886364643 | 66 | } |
| el17arm | 29:d85886364643 | 67 | if(_level_select == 2) { |
| el17arm | 29:d85886364643 | 68 | |
| el17arm | 33:023f57d52b1c | 69 | _sprites.miner_draw(lcd); |
| el17arm | 29:d85886364643 | 70 | lcd.drawLine(0,47,83,47,1); |
| el17arm | 29:d85886364643 | 71 | //printf("level 2 time = %f \n", t.read()); |
| el17arm | 29:d85886364643 | 72 | } |
| el17arm | 29:d85886364643 | 73 | } |
| el17arm | 29:d85886364643 | 74 | |
| el17arm | 33:023f57d52b1c | 75 | bool Gameengine::enemy_death() |
| el17arm | 33:023f57d52b1c | 76 | { |
| el17arm | 33:023f57d52b1c | 77 | if(_sprites.enemy_collision(0) || _sprites.enemy_collision(1) || |
| el17arm | 34:c5a042973e0c | 78 | _sprites.enemy_collision(2) || _sprites.enemy_collision(3)) |
| el17arm | 33:023f57d52b1c | 79 | |
| el17arm | 33:023f57d52b1c | 80 | return true; |
| el17arm | 33:023f57d52b1c | 81 | else { |
| el17arm | 33:023f57d52b1c | 82 | return false; |
| el17arm | 33:023f57d52b1c | 83 | } |
| el17arm | 33:023f57d52b1c | 84 | } |
| el17arm | 33:023f57d52b1c | 85 | |
| el17arm | 29:d85886364643 | 86 | void Gameengine::lose_life(N5110 &lcd) |
| el17arm | 29:d85886364643 | 87 | { |
| el17arm | 34:c5a042973e0c | 88 | if (trap_death(lcd) == true || enemy_death() == true) { |
| el17arm | 29:d85886364643 | 89 | _lives--; |
| el17arm | 33:023f57d52b1c | 90 | _sprites.miner_init(3, 33); |
| el17arm | 29:d85886364643 | 91 | wait(1); |
| el17arm | 29:d85886364643 | 92 | } |
| el17arm | 29:d85886364643 | 93 | } |
| el17arm | 29:d85886364643 | 94 | |
| el17arm | 29:d85886364643 | 95 | bool Gameengine::game_over() |
| el17arm | 29:d85886364643 | 96 | { |
| el17arm | 29:d85886364643 | 97 | if(_lives == 0 || t.read() > 60) { |
| el17arm | 29:d85886364643 | 98 | t.stop(); |
| el17arm | 29:d85886364643 | 99 | return true; |
| el17arm | 29:d85886364643 | 100 | } else { |
| el17arm | 29:d85886364643 | 101 | return false; |
| el17arm | 29:d85886364643 | 102 | } |
| el17arm | 29:d85886364643 | 103 | } |
| el17arm | 29:d85886364643 | 104 | |
| el17arm | 29:d85886364643 | 105 | void Gameengine::next_level(N5110 &lcd) |
| el17arm | 29:d85886364643 | 106 | { |
| el17arm | 29:d85886364643 | 107 | if(_l1.level1_exit(lcd) == true) { |
| el17arm | 29:d85886364643 | 108 | t.stop(); |
| el17arm | 29:d85886364643 | 109 | _level_select = 2; |
| el17arm | 33:023f57d52b1c | 110 | _sprites.miner_init(3,0); |
| el17arm | 29:d85886364643 | 111 | printf("Final score is %f \n ",_lives * (60 - t.read())+ (10 * _l1.keys_collected())); |
| el17arm | 29:d85886364643 | 112 | } |
| el17arm | 34:c5a042973e0c | 113 | } |
| el17arm | 34:c5a042973e0c | 114 | |
| el17arm | 34:c5a042973e0c | 115 | bool Gameengine::trap_death(N5110 &lcd) |
| el17arm | 34:c5a042973e0c | 116 | { |
| el17arm | 37:4d525a37d5d2 | 117 | if(_sprites.trap (_l1.trap1.tx, _l1.trap1.ty, lcd) || |
| el17arm | 37:4d525a37d5d2 | 118 | _sprites.trap(_l1.trap2.tx, _l1.trap2.ty, lcd) || |
| el17arm | 37:4d525a37d5d2 | 119 | _sprites.trap(_l1.trap3.tx, _l1.trap3.ty, lcd) || |
| el17arm | 37:4d525a37d5d2 | 120 | _sprites.trap(_l1.trap4.tx, _l1.trap4.ty, lcd)) { |
| el17arm | 34:c5a042973e0c | 121 | return true; |
| el17arm | 34:c5a042973e0c | 122 | } else { |
| el17arm | 34:c5a042973e0c | 123 | return false; |
| el17arm | 34:c5a042973e0c | 124 | } |
| el17arm | 34:c5a042973e0c | 125 | } |
| el17arm | 34:c5a042973e0c | 126 | |
| el17arm | 37:4d525a37d5d2 | 127 | void Gameengine::key_draw(N5110 &lcd, Gamepad &pad) |
| el17arm | 37:4d525a37d5d2 | 128 | { |
| el17arm | 37:4d525a37d5d2 | 129 | printf(" key1 = %d \n", _l1.key1.k); |
| el17arm | 37:4d525a37d5d2 | 130 | _sprites.key_collect(_l1.key1.k, _l1.key1.kx, _l1.key1.ky, lcd, pad); |
| el17arm | 37:4d525a37d5d2 | 131 | //_sprites.key_collect(1, _l1.key2.kx, _l1.key2.ky, lcd, pad); |
| el17arm | 37:4d525a37d5d2 | 132 | //_sprites.key_collect(2, 40, 6, lcd, pad); |
| el17arm | 37:4d525a37d5d2 | 133 | //_sprites.key_collect(3, 62, 6, lcd, pad); |
| el17arm | 37:4d525a37d5d2 | 134 | //_sprites.key_collect(4, 75, 0, lcd, pad); |
| el17arm | 37:4d525a37d5d2 | 135 | } |