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@38:55bb9da08a52, 2019-04-14 (annotated)
- Committer:
- el17arm
- Date:
- Sun Apr 14 15:18:58 2019 +0000
- Revision:
- 38:55bb9da08a52
- Parent:
- 37:4d525a37d5d2
- Child:
- 39:ddca28745388
- Child:
- 40:913339e324b8
incorporated blocks, traps and keys parameters into level1 function.
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 | 29:d85886364643 | 17 | _lives = 3; |
| el17arm | 29:d85886364643 | 18 | } |
| el17arm | 29:d85886364643 | 19 | |
| el17arm | 29:d85886364643 | 20 | void Gameengine::update(N5110 &lcd, Gamepad &pad) |
| el17arm | 29:d85886364643 | 21 | { |
| el17arm | 29:d85886364643 | 22 | t.start(); |
| el17arm | 29:d85886364643 | 23 | read_direction(pad); |
| el17arm | 38:55bb9da08a52 | 24 | _sprites.miner_draw(lcd); |
| el17arm | 33:023f57d52b1c | 25 | _sprites.miner_move(_d, lcd); |
| el17arm | 33:023f57d52b1c | 26 | _sprites.miner_gravity(lcd); |
| el17arm | 33:023f57d52b1c | 27 | _sprites.miner_jump(lcd, pad); |
| el17arm | 33:023f57d52b1c | 28 | _sprites.miner_land(lcd); |
| el17arm | 29:d85886364643 | 29 | lose_life(lcd); |
| el17arm | 29:d85886364643 | 30 | game_over(); |
| el17arm | 29:d85886364643 | 31 | next_level(lcd); |
| el17arm | 34:c5a042973e0c | 32 | |
| el17arm | 33:023f57d52b1c | 33 | _sprites.enemy_move(0, 0.5, lcd); |
| el17arm | 33:023f57d52b1c | 34 | _sprites.enemy_move(1, 1, lcd); |
| el17arm | 34:c5a042973e0c | 35 | |
| el17arm | 29:d85886364643 | 36 | } |
| el17arm | 29:d85886364643 | 37 | |
| el17arm | 38:55bb9da08a52 | 38 | void Gameengine::read_direction(Gamepad &pad) |
| el17arm | 38:55bb9da08a52 | 39 | { |
| el17arm | 38:55bb9da08a52 | 40 | _d = pad.get_direction(); |
| el17arm | 38:55bb9da08a52 | 41 | } |
| el17arm | 38:55bb9da08a52 | 42 | |
| el17arm | 37:4d525a37d5d2 | 43 | void Gameengine::draw(N5110 &lcd, Gamepad &pad) |
| el17arm | 29:d85886364643 | 44 | { |
| el17arm | 29:d85886364643 | 45 | if (_level_select == 1) { |
| el17arm | 34:c5a042973e0c | 46 | |
| el17arm | 37:4d525a37d5d2 | 47 | _l1.trap_pos(); |
| el17arm | 37:4d525a37d5d2 | 48 | _l1.key_pos(); |
| el17arm | 38:55bb9da08a52 | 49 | _l1.block_pos(); |
| el17arm | 33:023f57d52b1c | 50 | _sprites.enemy_collision(0); |
| el17arm | 33:023f57d52b1c | 51 | _sprites.enemy_collision(1); |
| el17arm | 29:d85886364643 | 52 | _l1.level_platforms(lcd); |
| el17arm | 38:55bb9da08a52 | 53 | |
| el17arm | 38:55bb9da08a52 | 54 | |
| el17arm | 34:c5a042973e0c | 55 | _sprites.keys_collected(); |
| el17arm | 37:4d525a37d5d2 | 56 | key_draw(lcd, pad); |
| el17arm | 38:55bb9da08a52 | 57 | blocks(lcd); |
| el17arm | 29:d85886364643 | 58 | |
| el17arm | 29:d85886364643 | 59 | } |
| el17arm | 29:d85886364643 | 60 | if(_level_select == 2) { |
| el17arm | 29:d85886364643 | 61 | |
| el17arm | 38:55bb9da08a52 | 62 | //_sprites.miner_draw(lcd); |
| el17arm | 29:d85886364643 | 63 | lcd.drawLine(0,47,83,47,1); |
| el17arm | 29:d85886364643 | 64 | //printf("level 2 time = %f \n", t.read()); |
| el17arm | 29:d85886364643 | 65 | } |
| el17arm | 29:d85886364643 | 66 | } |
| el17arm | 29:d85886364643 | 67 | |
| el17arm | 33:023f57d52b1c | 68 | bool Gameengine::enemy_death() |
| el17arm | 33:023f57d52b1c | 69 | { |
| el17arm | 33:023f57d52b1c | 70 | if(_sprites.enemy_collision(0) || _sprites.enemy_collision(1) || |
| el17arm | 38:55bb9da08a52 | 71 | _sprites.enemy_collision(2) || _sprites.enemy_collision(3)) |
| el17arm | 33:023f57d52b1c | 72 | |
| el17arm | 33:023f57d52b1c | 73 | return true; |
| el17arm | 33:023f57d52b1c | 74 | else { |
| el17arm | 33:023f57d52b1c | 75 | return false; |
| el17arm | 33:023f57d52b1c | 76 | } |
| el17arm | 33:023f57d52b1c | 77 | } |
| el17arm | 33:023f57d52b1c | 78 | |
| el17arm | 29:d85886364643 | 79 | void Gameengine::lose_life(N5110 &lcd) |
| el17arm | 29:d85886364643 | 80 | { |
| el17arm | 34:c5a042973e0c | 81 | if (trap_death(lcd) == true || enemy_death() == true) { |
| el17arm | 29:d85886364643 | 82 | _lives--; |
| el17arm | 33:023f57d52b1c | 83 | _sprites.miner_init(3, 33); |
| el17arm | 29:d85886364643 | 84 | wait(1); |
| el17arm | 29:d85886364643 | 85 | } |
| el17arm | 29:d85886364643 | 86 | } |
| el17arm | 29:d85886364643 | 87 | |
| el17arm | 29:d85886364643 | 88 | bool Gameengine::game_over() |
| el17arm | 29:d85886364643 | 89 | { |
| el17arm | 38:55bb9da08a52 | 90 | if(_lives == 0 || t.read() > 120) { |
| el17arm | 29:d85886364643 | 91 | t.stop(); |
| el17arm | 29:d85886364643 | 92 | return true; |
| el17arm | 29:d85886364643 | 93 | } else { |
| el17arm | 29:d85886364643 | 94 | return false; |
| el17arm | 29:d85886364643 | 95 | } |
| el17arm | 29:d85886364643 | 96 | } |
| el17arm | 29:d85886364643 | 97 | |
| el17arm | 29:d85886364643 | 98 | void Gameengine::next_level(N5110 &lcd) |
| el17arm | 38:55bb9da08a52 | 99 | { |
| el17arm | 38:55bb9da08a52 | 100 | if(_l1.level1_exit(lcd) && _sprites.keys_collected()) { |
| el17arm | 29:d85886364643 | 101 | t.stop(); |
| el17arm | 29:d85886364643 | 102 | _level_select = 2; |
| el17arm | 33:023f57d52b1c | 103 | _sprites.miner_init(3,0); |
| el17arm | 29:d85886364643 | 104 | printf("Final score is %f \n ",_lives * (60 - t.read())+ (10 * _l1.keys_collected())); |
| el17arm | 29:d85886364643 | 105 | } |
| el17arm | 34:c5a042973e0c | 106 | } |
| el17arm | 34:c5a042973e0c | 107 | |
| el17arm | 34:c5a042973e0c | 108 | bool Gameengine::trap_death(N5110 &lcd) |
| el17arm | 34:c5a042973e0c | 109 | { |
| el17arm | 37:4d525a37d5d2 | 110 | if(_sprites.trap (_l1.trap1.tx, _l1.trap1.ty, lcd) || |
| el17arm | 38:55bb9da08a52 | 111 | _sprites.trap(_l1.trap2.tx, _l1.trap2.ty, lcd) || |
| el17arm | 38:55bb9da08a52 | 112 | //_sprites.trap(_l1.trap3.tx, _l1.trap3.ty, lcd) || |
| el17arm | 38:55bb9da08a52 | 113 | _sprites.trap(_l1.trap4.tx, _l1.trap4.ty, lcd)) { |
| el17arm | 34:c5a042973e0c | 114 | return true; |
| el17arm | 38:55bb9da08a52 | 115 | } |
| el17arm | 34:c5a042973e0c | 116 | return false; |
| el17arm | 34:c5a042973e0c | 117 | } |
| el17arm | 34:c5a042973e0c | 118 | |
| el17arm | 37:4d525a37d5d2 | 119 | void Gameengine::key_draw(N5110 &lcd, Gamepad &pad) |
| el17arm | 37:4d525a37d5d2 | 120 | { |
| el17arm | 38:55bb9da08a52 | 121 | _sprites.key_collect(0, _l1.key1.kx, _l1.key1.ky, lcd, pad); |
| el17arm | 38:55bb9da08a52 | 122 | _sprites.key_collect(1, _l1.key2.kx, _l1.key2.ky, lcd, pad); |
| el17arm | 38:55bb9da08a52 | 123 | _sprites.key_collect(2, _l1.key3.kx, _l1.key3.ky, lcd, pad); |
| el17arm | 38:55bb9da08a52 | 124 | _sprites.key_collect(3, _l1.key4.kx, _l1.key4.ky, lcd, pad); |
| el17arm | 38:55bb9da08a52 | 125 | _sprites.key_collect(4, _l1.key5.kx, _l1.key5.ky, lcd, pad); |
| el17arm | 38:55bb9da08a52 | 126 | } |
| el17arm | 38:55bb9da08a52 | 127 | |
| el17arm | 38:55bb9da08a52 | 128 | void Gameengine::blocks(N5110 &lcd) |
| el17arm | 38:55bb9da08a52 | 129 | { |
| el17arm | 38:55bb9da08a52 | 130 | _sprites.soft_blocks(_l1.sof1.sx, _l1.sof1.sy, _l1.sof1.sz, lcd); |
| el17arm | 38:55bb9da08a52 | 131 | _sprites.soft_blocks(_l1.sof2.sx, _l1.sof2.sy, _l1.sof2.sz, lcd); |
| el17arm | 38:55bb9da08a52 | 132 | _sprites.soft_blocks(_l1.sof3.sx, _l1.sof3.sy, _l1.sof3.sz, lcd); |
| el17arm | 38:55bb9da08a52 | 133 | _sprites.blocks(_d, _l1.sol1.bx, _l1.sol1.by, lcd); |
| el17arm | 38:55bb9da08a52 | 134 | _sprites.blocks(_d, _l1.sol2.bx, _l1.sol2.by, lcd); |
| el17arm | 38:55bb9da08a52 | 135 | } |
| el17arm | 38:55bb9da08a52 | 136 | |
| el17arm | 38:55bb9da08a52 | 137 | bool Gameengine::enemies(N5110 &lcd) |
| el17arm | 38:55bb9da08a52 | 138 | { |
| el17arm | 38:55bb9da08a52 | 139 | |
| el17arm | 37:4d525a37d5d2 | 140 | } |