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.
Diff: Game/Game.cpp
- Revision:
- 9:96969b1c6bde
- Parent:
- 8:21b6d4dbce44
- Child:
- 10:58cf89dd878c
--- a/Game/Game.cpp Fri Apr 19 17:54:09 2019 +0000 +++ b/Game/Game.cpp Wed Apr 24 10:18:45 2019 +0000 @@ -1,22 +1,6 @@ #include "Game.h" -// Objects - - - -const int number_of_blocks = 4; -Block blocks [number_of_blocks] = { - { {5,30},{80,40} }, - { {5,5},{80,10} }, - { {10,24},{20,34} }, - { {40,24},{44,26} } -}; - -const int number_of_moving_blocks = 1; -MovingBlock moving_blocks [number_of_moving_blocks] = { - {2,30,30,1,1,0,0} - }; - +// Objects Game::Game() { @@ -24,16 +8,58 @@ } + +void Game::load_level(int level_number) +{ + LevelDefinition level_def; + switch(level_number) { + case 1 : + level_def = level_1; + break; + case 2: + level_def = level_2; + break; + case 3: + level_def = level_3; + break; + case 4: + level_def = level_4; + break; + case 5: + level_def = level_5; + break; + case 6: + level_def = level_6; + break; + case 7: + level_def = level_7; + break; + case 8: + _game_won = true; + return; + + + } + + _player.init(6,6,level_def.initial_pos); + _level.init(level_def.blocks, + level_def.number_of_blocks, + level_def.goal); + + + for (int i = 0; i < level_def.number_of_moving_blocks; i++) { + MovingBlockDefinition x = level_def.moving_blocks[i]; + _level.declare_moving_block(x.index,x.extending,x.distance); + } + +} + void Game::init() { - Vector2D pos = {32,10}; - _player.init(6,6,pos); - - Vector2D goal = {70,19}; - _level.init(blocks,moving_blocks,number_of_blocks, - number_of_moving_blocks, - goal); - + + load_level(1); + _current_level = 1; + _game_won = false; } Game::~Game() @@ -41,20 +67,24 @@ } -void Game::read_input(Gamepad &pad) -{ -} void Game::update(Gamepad &pad) { - - _player.update(pad, blocks,number_of_blocks); + _player.update(pad, _level.get_blocks(),_level.get_number_of_blocks()); + _level.update_moving_blocks(); + if (_player.check_goal_reached(_level.get_goal())) { + _current_level += 1; + load_level(_current_level); + } + + } + void Game::draw(N5110 &lcd) { - + lcd.clear(); _level.render(lcd); _player.render(lcd); @@ -62,3 +92,8 @@ } + +bool Game::game_won() +{ + return _game_won; +}