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.
Game/Game.cpp@9:96969b1c6bde, 2019-04-24 (annotated)
- Committer:
- joshdavy
- Date:
- Wed Apr 24 10:18:45 2019 +0000
- Revision:
- 9:96969b1c6bde
- Parent:
- 8:21b6d4dbce44
- Child:
- 10:58cf89dd878c
Added win screen aswell as multiple levels.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
joshdavy | 1:37802772843e | 1 | #include "Game.h" |
joshdavy | 8:21b6d4dbce44 | 2 | |
joshdavy | 9:96969b1c6bde | 3 | // Objects |
joshdavy | 1:37802772843e | 4 | Game::Game() |
joshdavy | 1:37802772843e | 5 | { |
joshdavy | 1:37802772843e | 6 | |
joshdavy | 7:68e06dda79f7 | 7 | |
joshdavy | 1:37802772843e | 8 | |
joshdavy | 1:37802772843e | 9 | |
joshdavy | 1:37802772843e | 10 | } |
joshdavy | 9:96969b1c6bde | 11 | |
joshdavy | 9:96969b1c6bde | 12 | void Game::load_level(int level_number) |
joshdavy | 9:96969b1c6bde | 13 | { |
joshdavy | 9:96969b1c6bde | 14 | LevelDefinition level_def; |
joshdavy | 9:96969b1c6bde | 15 | switch(level_number) { |
joshdavy | 9:96969b1c6bde | 16 | case 1 : |
joshdavy | 9:96969b1c6bde | 17 | level_def = level_1; |
joshdavy | 9:96969b1c6bde | 18 | break; |
joshdavy | 9:96969b1c6bde | 19 | case 2: |
joshdavy | 9:96969b1c6bde | 20 | level_def = level_2; |
joshdavy | 9:96969b1c6bde | 21 | break; |
joshdavy | 9:96969b1c6bde | 22 | case 3: |
joshdavy | 9:96969b1c6bde | 23 | level_def = level_3; |
joshdavy | 9:96969b1c6bde | 24 | break; |
joshdavy | 9:96969b1c6bde | 25 | case 4: |
joshdavy | 9:96969b1c6bde | 26 | level_def = level_4; |
joshdavy | 9:96969b1c6bde | 27 | break; |
joshdavy | 9:96969b1c6bde | 28 | case 5: |
joshdavy | 9:96969b1c6bde | 29 | level_def = level_5; |
joshdavy | 9:96969b1c6bde | 30 | break; |
joshdavy | 9:96969b1c6bde | 31 | case 6: |
joshdavy | 9:96969b1c6bde | 32 | level_def = level_6; |
joshdavy | 9:96969b1c6bde | 33 | break; |
joshdavy | 9:96969b1c6bde | 34 | case 7: |
joshdavy | 9:96969b1c6bde | 35 | level_def = level_7; |
joshdavy | 9:96969b1c6bde | 36 | break; |
joshdavy | 9:96969b1c6bde | 37 | case 8: |
joshdavy | 9:96969b1c6bde | 38 | _game_won = true; |
joshdavy | 9:96969b1c6bde | 39 | return; |
joshdavy | 9:96969b1c6bde | 40 | |
joshdavy | 9:96969b1c6bde | 41 | |
joshdavy | 9:96969b1c6bde | 42 | } |
joshdavy | 9:96969b1c6bde | 43 | |
joshdavy | 9:96969b1c6bde | 44 | _player.init(6,6,level_def.initial_pos); |
joshdavy | 9:96969b1c6bde | 45 | _level.init(level_def.blocks, |
joshdavy | 9:96969b1c6bde | 46 | level_def.number_of_blocks, |
joshdavy | 9:96969b1c6bde | 47 | level_def.goal); |
joshdavy | 9:96969b1c6bde | 48 | |
joshdavy | 9:96969b1c6bde | 49 | |
joshdavy | 9:96969b1c6bde | 50 | for (int i = 0; i < level_def.number_of_moving_blocks; i++) { |
joshdavy | 9:96969b1c6bde | 51 | MovingBlockDefinition x = level_def.moving_blocks[i]; |
joshdavy | 9:96969b1c6bde | 52 | _level.declare_moving_block(x.index,x.extending,x.distance); |
joshdavy | 9:96969b1c6bde | 53 | } |
joshdavy | 9:96969b1c6bde | 54 | |
joshdavy | 9:96969b1c6bde | 55 | } |
joshdavy | 9:96969b1c6bde | 56 | |
joshdavy | 7:68e06dda79f7 | 57 | void Game::init() |
joshdavy | 7:68e06dda79f7 | 58 | { |
joshdavy | 9:96969b1c6bde | 59 | |
joshdavy | 9:96969b1c6bde | 60 | load_level(1); |
joshdavy | 9:96969b1c6bde | 61 | _current_level = 1; |
joshdavy | 9:96969b1c6bde | 62 | _game_won = false; |
joshdavy | 7:68e06dda79f7 | 63 | } |
joshdavy | 1:37802772843e | 64 | |
joshdavy | 1:37802772843e | 65 | Game::~Game() |
joshdavy | 1:37802772843e | 66 | { |
joshdavy | 1:37802772843e | 67 | |
joshdavy | 1:37802772843e | 68 | } |
joshdavy | 1:37802772843e | 69 | |
joshdavy | 1:37802772843e | 70 | |
joshdavy | 1:37802772843e | 71 | |
joshdavy | 1:37802772843e | 72 | void Game::update(Gamepad &pad) |
joshdavy | 1:37802772843e | 73 | { |
joshdavy | 9:96969b1c6bde | 74 | _player.update(pad, _level.get_blocks(),_level.get_number_of_blocks()); |
joshdavy | 9:96969b1c6bde | 75 | _level.update_moving_blocks(); |
joshdavy | 9:96969b1c6bde | 76 | if (_player.check_goal_reached(_level.get_goal())) { |
joshdavy | 9:96969b1c6bde | 77 | _current_level += 1; |
joshdavy | 9:96969b1c6bde | 78 | load_level(_current_level); |
joshdavy | 9:96969b1c6bde | 79 | } |
joshdavy | 9:96969b1c6bde | 80 | |
joshdavy | 9:96969b1c6bde | 81 | |
joshdavy | 1:37802772843e | 82 | } |
joshdavy | 1:37802772843e | 83 | |
joshdavy | 9:96969b1c6bde | 84 | |
joshdavy | 2:b62e8be35a5d | 85 | void Game::draw(N5110 &lcd) |
joshdavy | 1:37802772843e | 86 | { |
joshdavy | 9:96969b1c6bde | 87 | |
joshdavy | 2:b62e8be35a5d | 88 | lcd.clear(); |
joshdavy | 8:21b6d4dbce44 | 89 | _level.render(lcd); |
joshdavy | 1:37802772843e | 90 | _player.render(lcd); |
joshdavy | 2:b62e8be35a5d | 91 | lcd.refresh(); |
joshdavy | 2:b62e8be35a5d | 92 | |
joshdavy | 1:37802772843e | 93 | } |
joshdavy | 1:37802772843e | 94 | |
joshdavy | 9:96969b1c6bde | 95 | |
joshdavy | 9:96969b1c6bde | 96 | bool Game::game_won() |
joshdavy | 9:96969b1c6bde | 97 | { |
joshdavy | 9:96969b1c6bde | 98 | return _game_won; |
joshdavy | 9:96969b1c6bde | 99 | } |