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@39:ddca28745388, 2019-04-14 (annotated)
- Committer:
- el17arm
- Date:
- Sun Apr 14 18:26:16 2019 +0000
- Revision:
- 39:ddca28745388
- Parent:
- 38:55bb9da08a52
checking against previous commit as getting unexpected error
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 | 39:ddca28745388 | 5 | _turn_flag = false; |
| el17arm | 39:ddca28745388 | 6 | _enem_flag = false; |
| 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 | 38:55bb9da08a52 | 33 | } |
| el17arm | 38:55bb9da08a52 | 34 | |
| el17arm | 37:4d525a37d5d2 | 35 | void Gameengine::draw(N5110 &lcd, Gamepad &pad) |
| el17arm | 29:d85886364643 | 36 | { |
| el17arm | 29:d85886364643 | 37 | if (_level_select == 1) { |
| el17arm | 34:c5a042973e0c | 38 | |
| el17arm | 37:4d525a37d5d2 | 39 | _l1.trap_pos(); |
| el17arm | 37:4d525a37d5d2 | 40 | _l1.key_pos(); |
| el17arm | 38:55bb9da08a52 | 41 | _l1.block_pos(); |
| el17arm | 29:d85886364643 | 42 | _l1.level_platforms(lcd); |
| el17arm | 39:ddca28745388 | 43 | enemies(lcd); |
| el17arm | 38:55bb9da08a52 | 44 | |
| el17arm | 34:c5a042973e0c | 45 | _sprites.keys_collected(); |
| el17arm | 37:4d525a37d5d2 | 46 | key_draw(lcd, pad); |
| el17arm | 38:55bb9da08a52 | 47 | blocks(lcd); |
| el17arm | 29:d85886364643 | 48 | |
| el17arm | 29:d85886364643 | 49 | } |
| el17arm | 29:d85886364643 | 50 | if(_level_select == 2) { |
| el17arm | 29:d85886364643 | 51 | |
| el17arm | 38:55bb9da08a52 | 52 | //_sprites.miner_draw(lcd); |
| el17arm | 29:d85886364643 | 53 | lcd.drawLine(0,47,83,47,1); |
| el17arm | 29:d85886364643 | 54 | //printf("level 2 time = %f \n", t.read()); |
| el17arm | 29:d85886364643 | 55 | } |
| el17arm | 29:d85886364643 | 56 | } |
| el17arm | 29:d85886364643 | 57 | |
| el17arm | 39:ddca28745388 | 58 | void Gameengine::read_direction(Gamepad &pad) |
| el17arm | 33:023f57d52b1c | 59 | { |
| el17arm | 39:ddca28745388 | 60 | _d = pad.get_direction(); |
| el17arm | 33:023f57d52b1c | 61 | } |
| el17arm | 33:023f57d52b1c | 62 | |
| el17arm | 29:d85886364643 | 63 | void Gameengine::lose_life(N5110 &lcd) |
| el17arm | 29:d85886364643 | 64 | { |
| el17arm | 34:c5a042973e0c | 65 | if (trap_death(lcd) == true || enemy_death() == true) { |
| el17arm | 29:d85886364643 | 66 | _lives--; |
| el17arm | 33:023f57d52b1c | 67 | _sprites.miner_init(3, 33); |
| el17arm | 29:d85886364643 | 68 | wait(1); |
| el17arm | 29:d85886364643 | 69 | } |
| el17arm | 29:d85886364643 | 70 | } |
| el17arm | 29:d85886364643 | 71 | |
| el17arm | 29:d85886364643 | 72 | bool Gameengine::game_over() |
| el17arm | 29:d85886364643 | 73 | { |
| el17arm | 38:55bb9da08a52 | 74 | if(_lives == 0 || t.read() > 120) { |
| el17arm | 29:d85886364643 | 75 | t.stop(); |
| el17arm | 29:d85886364643 | 76 | return true; |
| el17arm | 29:d85886364643 | 77 | } else { |
| el17arm | 29:d85886364643 | 78 | return false; |
| el17arm | 29:d85886364643 | 79 | } |
| el17arm | 29:d85886364643 | 80 | } |
| el17arm | 29:d85886364643 | 81 | |
| el17arm | 29:d85886364643 | 82 | void Gameengine::next_level(N5110 &lcd) |
| el17arm | 38:55bb9da08a52 | 83 | { |
| el17arm | 38:55bb9da08a52 | 84 | if(_l1.level1_exit(lcd) && _sprites.keys_collected()) { |
| el17arm | 29:d85886364643 | 85 | t.stop(); |
| el17arm | 29:d85886364643 | 86 | _level_select = 2; |
| el17arm | 33:023f57d52b1c | 87 | _sprites.miner_init(3,0); |
| el17arm | 29:d85886364643 | 88 | printf("Final score is %f \n ",_lives * (60 - t.read())+ (10 * _l1.keys_collected())); |
| el17arm | 29:d85886364643 | 89 | } |
| el17arm | 34:c5a042973e0c | 90 | } |
| el17arm | 34:c5a042973e0c | 91 | |
| el17arm | 34:c5a042973e0c | 92 | bool Gameengine::trap_death(N5110 &lcd) |
| el17arm | 34:c5a042973e0c | 93 | { |
| el17arm | 37:4d525a37d5d2 | 94 | if(_sprites.trap (_l1.trap1.tx, _l1.trap1.ty, lcd) || |
| el17arm | 38:55bb9da08a52 | 95 | _sprites.trap(_l1.trap2.tx, _l1.trap2.ty, lcd) || |
| el17arm | 38:55bb9da08a52 | 96 | //_sprites.trap(_l1.trap3.tx, _l1.trap3.ty, lcd) || |
| el17arm | 38:55bb9da08a52 | 97 | _sprites.trap(_l1.trap4.tx, _l1.trap4.ty, lcd)) { |
| el17arm | 34:c5a042973e0c | 98 | return true; |
| el17arm | 38:55bb9da08a52 | 99 | } |
| el17arm | 34:c5a042973e0c | 100 | return false; |
| el17arm | 34:c5a042973e0c | 101 | } |
| el17arm | 34:c5a042973e0c | 102 | |
| el17arm | 37:4d525a37d5d2 | 103 | void Gameengine::key_draw(N5110 &lcd, Gamepad &pad) |
| el17arm | 37:4d525a37d5d2 | 104 | { |
| el17arm | 38:55bb9da08a52 | 105 | _sprites.key_collect(0, _l1.key1.kx, _l1.key1.ky, lcd, pad); |
| el17arm | 38:55bb9da08a52 | 106 | _sprites.key_collect(1, _l1.key2.kx, _l1.key2.ky, lcd, pad); |
| el17arm | 38:55bb9da08a52 | 107 | _sprites.key_collect(2, _l1.key3.kx, _l1.key3.ky, lcd, pad); |
| el17arm | 38:55bb9da08a52 | 108 | _sprites.key_collect(3, _l1.key4.kx, _l1.key4.ky, lcd, pad); |
| el17arm | 38:55bb9da08a52 | 109 | _sprites.key_collect(4, _l1.key5.kx, _l1.key5.ky, lcd, pad); |
| el17arm | 38:55bb9da08a52 | 110 | } |
| el17arm | 38:55bb9da08a52 | 111 | |
| el17arm | 38:55bb9da08a52 | 112 | void Gameengine::blocks(N5110 &lcd) |
| el17arm | 38:55bb9da08a52 | 113 | { |
| el17arm | 38:55bb9da08a52 | 114 | _sprites.soft_blocks(_l1.sof1.sx, _l1.sof1.sy, _l1.sof1.sz, lcd); |
| el17arm | 38:55bb9da08a52 | 115 | _sprites.soft_blocks(_l1.sof2.sx, _l1.sof2.sy, _l1.sof2.sz, lcd); |
| el17arm | 38:55bb9da08a52 | 116 | _sprites.soft_blocks(_l1.sof3.sx, _l1.sof3.sy, _l1.sof3.sz, lcd); |
| el17arm | 38:55bb9da08a52 | 117 | _sprites.blocks(_d, _l1.sol1.bx, _l1.sol1.by, lcd); |
| el17arm | 38:55bb9da08a52 | 118 | _sprites.blocks(_d, _l1.sol2.bx, _l1.sol2.by, lcd); |
| el17arm | 38:55bb9da08a52 | 119 | } |
| el17arm | 38:55bb9da08a52 | 120 | |
| el17arm | 39:ddca28745388 | 121 | void Gameengine::enemies(N5110 &lcd) |
| el17arm | 38:55bb9da08a52 | 122 | { |
| el17arm | 39:ddca28745388 | 123 | _l1.enem_pos(); |
| el17arm | 39:ddca28745388 | 124 | if(_enem_flag == false){ |
| el17arm | 39:ddca28745388 | 125 | _sprites.enemy_init(0, _l1.enem1.ex, _l1.enem1.ey, _l1.enem1.d); |
| el17arm | 39:ddca28745388 | 126 | _sprites.enemy_init(1, _l1.enem2.ex, _l1.enem2.ey, _l1.enem2.d); |
| el17arm | 39:ddca28745388 | 127 | _enem_flag = true; |
| el17arm | 39:ddca28745388 | 128 | } |
| el17arm | 39:ddca28745388 | 129 | _sprites.enemy_move(0, _l1.enem1.v, lcd); |
| el17arm | 39:ddca28745388 | 130 | _sprites.enemy_move(1, _l1.enem2.v, lcd); |
| el17arm | 39:ddca28745388 | 131 | _sprites.enemy_collision(0); |
| el17arm | 39:ddca28745388 | 132 | _sprites.enemy_collision(1); |
| el17arm | 37:4d525a37d5d2 | 133 | } |