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@31:ed5f7f15a1ed, 2019-04-10 (annotated)
- Committer:
- el17arm
- Date:
- Wed Apr 10 16:20:28 2019 +0000
- Revision:
- 31:ed5f7f15a1ed
- Parent:
- 29:d85886364643
back up
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 | 31:ed5f7f15a1ed | 7 | |
| el17arm | 29:d85886364643 | 8 | } |
| el17arm | 29:d85886364643 | 9 | |
| el17arm | 29:d85886364643 | 10 | Gameengine::~Gameengine() |
| el17arm | 29:d85886364643 | 11 | { |
| el17arm | 29:d85886364643 | 12 | } |
| el17arm | 29:d85886364643 | 13 | |
| el17arm | 29:d85886364643 | 14 | void Gameengine::game_init() |
| el17arm | 29:d85886364643 | 15 | { |
| el17arm | 29:d85886364643 | 16 | _level_select = 1; |
| el17arm | 31:ed5f7f15a1ed | 17 | _sprites.miner_init(3, 33); |
| el17arm | 31:ed5f7f15a1ed | 18 | _sprites.enemy_init(1, 22, 42, 40); |
| el17arm | 31:ed5f7f15a1ed | 19 | _sprites.enemy_init(0, 22, 20, 40); |
| el17arm | 29:d85886364643 | 20 | _lives = 3; |
| el17arm | 29:d85886364643 | 21 | } |
| el17arm | 29:d85886364643 | 22 | |
| el17arm | 31:ed5f7f15a1ed | 23 | void Gameengine::get_miner_pos() |
| el17arm | 29:d85886364643 | 24 | { |
| el17arm | 31:ed5f7f15a1ed | 25 | Vector2D p = _sprites.get_pos(); |
| el17arm | 29:d85886364643 | 26 | |
| el17arm | 31:ed5f7f15a1ed | 27 | //printf("miner x %f \n", p.x); |
| el17arm | 31:ed5f7f15a1ed | 28 | //printf("miner y %f \n", p.y); |
| el17arm | 31:ed5f7f15a1ed | 29 | } |
| el17arm | 29:d85886364643 | 30 | |
| el17arm | 29:d85886364643 | 31 | void Gameengine::read_direction(Gamepad &pad) |
| el17arm | 29:d85886364643 | 32 | { |
| el17arm | 29:d85886364643 | 33 | _d = pad.get_direction(); |
| el17arm | 29:d85886364643 | 34 | } |
| el17arm | 29:d85886364643 | 35 | |
| el17arm | 29:d85886364643 | 36 | void Gameengine::update(N5110 &lcd, Gamepad &pad) |
| el17arm | 29:d85886364643 | 37 | { |
| el17arm | 29:d85886364643 | 38 | t.start(); |
| el17arm | 29:d85886364643 | 39 | read_direction(pad); |
| el17arm | 29:d85886364643 | 40 | //get_miner_pos(); |
| el17arm | 31:ed5f7f15a1ed | 41 | _sprites.miner_move(_d, lcd); |
| el17arm | 31:ed5f7f15a1ed | 42 | _sprites.miner_gravity(lcd); |
| el17arm | 31:ed5f7f15a1ed | 43 | _sprites.miner_jump(lcd, pad); |
| el17arm | 31:ed5f7f15a1ed | 44 | _sprites.miner_land(lcd); |
| el17arm | 29:d85886364643 | 45 | lose_life(lcd); |
| el17arm | 29:d85886364643 | 46 | game_over(); |
| el17arm | 29:d85886364643 | 47 | next_level(lcd); |
| el17arm | 31:ed5f7f15a1ed | 48 | _sprites.enemy_collision(0); |
| el17arm | 31:ed5f7f15a1ed | 49 | _sprites.enemy_collision(1); |
| el17arm | 31:ed5f7f15a1ed | 50 | _sprites.enemy_move(0, 0.5, lcd); |
| el17arm | 31:ed5f7f15a1ed | 51 | _sprites.enemy_move(1, 1, lcd); |
| el17arm | 31:ed5f7f15a1ed | 52 | |
| el17arm | 29:d85886364643 | 53 | } |
| el17arm | 29:d85886364643 | 54 | |
| el17arm | 29:d85886364643 | 55 | void Gameengine::draw(Key _k, N5110 &lcd, Gamepad &pad) |
| el17arm | 29:d85886364643 | 56 | { |
| el17arm | 29:d85886364643 | 57 | if (_level_select == 1) { |
| el17arm | 31:ed5f7f15a1ed | 58 | |
| el17arm | 31:ed5f7f15a1ed | 59 | _sprites.miner_draw(lcd); |
| el17arm | 29:d85886364643 | 60 | _l1.level_platforms(lcd); |
| el17arm | 29:d85886364643 | 61 | _l1.soft_blocks(lcd); |
| el17arm | 29:d85886364643 | 62 | _l1.solid_blocks(lcd); |
| el17arm | 31:ed5f7f15a1ed | 63 | keys(lcd, pad); |
| el17arm | 31:ed5f7f15a1ed | 64 | keys_collected(); |
| el17arm | 29:d85886364643 | 65 | _l1.traps(lcd); |
| el17arm | 29:d85886364643 | 66 | |
| el17arm | 29:d85886364643 | 67 | } |
| el17arm | 29:d85886364643 | 68 | if(_level_select == 2) { |
| el17arm | 29:d85886364643 | 69 | |
| el17arm | 31:ed5f7f15a1ed | 70 | _sprites.miner_draw(lcd); |
| el17arm | 29:d85886364643 | 71 | lcd.drawLine(0,47,83,47,1); |
| el17arm | 29:d85886364643 | 72 | //printf("level 2 time = %f \n", t.read()); |
| el17arm | 29:d85886364643 | 73 | } |
| el17arm | 29:d85886364643 | 74 | } |
| el17arm | 29:d85886364643 | 75 | |
| el17arm | 29:d85886364643 | 76 | void Gameengine::lose_life(N5110 &lcd) |
| el17arm | 29:d85886364643 | 77 | { |
| el17arm | 31:ed5f7f15a1ed | 78 | if (_l1.traps(lcd) == 1 || enemy_death() == true) { |
| el17arm | 29:d85886364643 | 79 | _lives--; |
| el17arm | 31:ed5f7f15a1ed | 80 | _sprites.miner_init(3, 33); |
| el17arm | 29:d85886364643 | 81 | wait(1); |
| el17arm | 29:d85886364643 | 82 | } |
| el17arm | 29:d85886364643 | 83 | } |
| el17arm | 29:d85886364643 | 84 | |
| el17arm | 31:ed5f7f15a1ed | 85 | bool Gameengine::enemy_death() |
| el17arm | 31:ed5f7f15a1ed | 86 | { |
| el17arm | 31:ed5f7f15a1ed | 87 | if(_sprites.enemy_collision(0) || _sprites.enemy_collision(1) || |
| el17arm | 31:ed5f7f15a1ed | 88 | _sprites.enemy_collision(2) || _sprites.enemy_collision(3)) |
| el17arm | 31:ed5f7f15a1ed | 89 | |
| el17arm | 31:ed5f7f15a1ed | 90 | return true; |
| el17arm | 31:ed5f7f15a1ed | 91 | else { |
| el17arm | 31:ed5f7f15a1ed | 92 | return false; |
| el17arm | 31:ed5f7f15a1ed | 93 | } |
| el17arm | 31:ed5f7f15a1ed | 94 | } |
| el17arm | 31:ed5f7f15a1ed | 95 | |
| el17arm | 31:ed5f7f15a1ed | 96 | bool Gameengine::exit_level(int x, int y, N5110 &lcd) |
| el17arm | 31:ed5f7f15a1ed | 97 | { |
| el17arm | 31:ed5f7f15a1ed | 98 | lcd.drawSprite(x,y,6,5,(int *)door); |
| el17arm | 31:ed5f7f15a1ed | 99 | |
| el17arm | 31:ed5f7f15a1ed | 100 | if(_keys == 5 && lcd.getPixel(x-1, y+5)) { |
| el17arm | 31:ed5f7f15a1ed | 101 | return true; |
| el17arm | 31:ed5f7f15a1ed | 102 | } else { |
| el17arm | 31:ed5f7f15a1ed | 103 | return false; |
| el17arm | 31:ed5f7f15a1ed | 104 | } |
| el17arm | 31:ed5f7f15a1ed | 105 | } |
| el17arm | 31:ed5f7f15a1ed | 106 | |
| el17arm | 31:ed5f7f15a1ed | 107 | void Gameengine::next_level(N5110 &lcd) |
| el17arm | 31:ed5f7f15a1ed | 108 | { |
| el17arm | 31:ed5f7f15a1ed | 109 | if(_game.level1_exit(lcd) == true) { |
| el17arm | 31:ed5f7f15a1ed | 110 | t.stop(); |
| el17arm | 31:ed5f7f15a1ed | 111 | _level_select = 2; |
| el17arm | 31:ed5f7f15a1ed | 112 | _sprites.miner_init(3,0); |
| el17arm | 31:ed5f7f15a1ed | 113 | printf("Final score is %f \n ",_lives * (60 - t.read())+ (10 * _l1.keys_collected())); |
| el17arm | 31:ed5f7f15a1ed | 114 | } |
| el17arm | 31:ed5f7f15a1ed | 115 | } |
| el17arm | 31:ed5f7f15a1ed | 116 | |
| el17arm | 31:ed5f7f15a1ed | 117 | bool Game::level1_exit(N5110 &lcd) |
| el17arm | 31:ed5f7f15a1ed | 118 | { |
| el17arm | 31:ed5f7f15a1ed | 119 | if(_level.exit_level(78,41,lcd) == true) { |
| el17arm | 31:ed5f7f15a1ed | 120 | return true; |
| el17arm | 31:ed5f7f15a1ed | 121 | } else { |
| el17arm | 31:ed5f7f15a1ed | 122 | return false; |
| el17arm | 31:ed5f7f15a1ed | 123 | } |
| el17arm | 31:ed5f7f15a1ed | 124 | } |
| el17arm | 31:ed5f7f15a1ed | 125 | |
| el17arm | 31:ed5f7f15a1ed | 126 | bool Level1::level1_exit(N5110 &lcd) |
| el17arm | 31:ed5f7f15a1ed | 127 | { |
| el17arm | 31:ed5f7f15a1ed | 128 | if(_level.exit_level(78,41,lcd) == true) { |
| el17arm | 31:ed5f7f15a1ed | 129 | return true; |
| el17arm | 31:ed5f7f15a1ed | 130 | } else { |
| el17arm | 31:ed5f7f15a1ed | 131 | return false; |
| el17arm | 31:ed5f7f15a1ed | 132 | } |
| el17arm | 31:ed5f7f15a1ed | 133 | } |
| el17arm | 31:ed5f7f15a1ed | 134 | |
| el17arm | 29:d85886364643 | 135 | bool Gameengine::game_over() |
| el17arm | 29:d85886364643 | 136 | { |
| el17arm | 29:d85886364643 | 137 | if(_lives == 0 || t.read() > 60) { |
| el17arm | 29:d85886364643 | 138 | t.stop(); |
| el17arm | 29:d85886364643 | 139 | return true; |
| el17arm | 29:d85886364643 | 140 | } else { |
| el17arm | 29:d85886364643 | 141 | return false; |
| el17arm | 29:d85886364643 | 142 | } |
| el17arm | 29:d85886364643 | 143 | } |