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
Fork of el17ajf by
Diff: Game/Game.cpp
- Revision:
- 19:370d83a8dc33
- Parent:
- 18:24ce897024d0
- Child:
- 21:62d2b5b73160
--- a/Game/Game.cpp Wed Apr 03 14:31:49 2019 +0000 +++ b/Game/Game.cpp Wed Apr 03 16:18:26 2019 +0000 @@ -2,6 +2,7 @@ #include "Input.h" #include "Engine.h" #include "Menus.h" +#include "Prefs.h" Game::Game(Difficulty difficulty) { currentTetromino = Tetromino::getTetrominoOfType( @@ -11,19 +12,26 @@ switch (difficulty) { case EASY: move_frames = Engine::FPS / 6; // ~ 160ms + scoreForRow = 6; break; case MEDIUM: move_frames = Engine::FPS / 9; // ~ 110ms + scoreForRow = 8; break; case HARD: move_frames = Engine::FPS / 12; // ~ 80ms + scoreForRow = 10; break; } - frames = 0; last_move_frame = 0; start_x = Grid::GRID_WIDTH / 2 - 1; currentTetromino = currentTetromino.teleportedTo(start_x); + score = 0; + Prefs prefs; + playerNumber = prefs.getKey(Prefs::LAST_PLAYER) + 1; + + printf(">>>>>>> made game ...\n"); } Game::~Game() { @@ -58,11 +66,21 @@ } } +void Game::addScore(int rowsCleared) { + score += scoreForRow * rowsCleared * rowsCleared; + if (score > 9999) { + score = 9999; + } +} + void Game::moveCurrentTetrominoDown() { if (grid.isSpaceForTetromino(currentTetromino.movedDown())) { currentTetromino = currentTetromino.movedDown(); } else { - grid.placeTetromino(currentTetromino); + int rowsCleared = grid.placeTetromino(currentTetromino); + if (rowsCleared != 0) { + addScore(rowsCleared); + } currentTetromino = Tetromino::getTetrominoOfType(nextTetrominoType); // centre it currentTetromino = currentTetromino.teleportedTo(start_x); @@ -76,6 +94,7 @@ void Game::dropCurrentTetromino() { while (grid.isSpaceForTetromino(currentTetromino.movedDown())) { + score += 1; currentTetromino = currentTetromino.movedDown(); } moveCurrentTetrominoDown(); @@ -86,6 +105,19 @@ grid.draw(); } +void Game::addScoreToLeaderboard() { + Prefs prefs; + for (int i = 0; i < Prefs::HIGHSCORE3; i++) { + if (score > prefs.getKey((Prefs::Key)i)) { + prefs.setKey((Prefs::Key)i, score); + prefs.setKey((Prefs::Key)(i + 3), playerNumber); + } + } +} + void Game::gameOver() { + addScoreToLeaderboard(); + Prefs prefs; + prefs.setKey(Prefs::LAST_PLAYER, playerNumber); Menus::add(Menus::GAME_OVER); }