summaryrefslogtreecommitdiff
path: root/src/Model/Game.cpp
diff options
context:
space:
mode:
authormanzerbredes <loic.guegan_secondary@yahoo.fr>2015-05-03 09:58:01 +0200
committermanzerbredes <loic.guegan_secondary@yahoo.fr>2015-05-03 09:58:01 +0200
commit8488827025f25743ef18eca8c55cfdff5767341b (patch)
tree47dd0d789c264a472c7fc2313966733a30213866 /src/Model/Game.cpp
parent9759972f351bd68001735419bcfb9a285c68bed7 (diff)
parent4cc6c6596b614fce392040b85a182dbf50d0b044 (diff)
Merge branch 'develop'
-Correct bugs -Manage score -Add some helpers -Optimize some code
Diffstat (limited to 'src/Model/Game.cpp')
-rw-r--r--src/Model/Game.cpp52
1 files changed, 44 insertions, 8 deletions
diff --git a/src/Model/Game.cpp b/src/Model/Game.cpp
index 6039bc9..284d82b 100644
--- a/src/Model/Game.cpp
+++ b/src/Model/Game.cpp
@@ -1,49 +1,85 @@
#include "Game.hpp"
+//==================== Constructor and Destructor ====================
-Game::Game() : m_grid(){
+//Constructor
+Game::Game() : m_grid(), m_score(0), m_nbMove(0){
}
+//Destructor
Game::~Game(){
}
+//==================== Helpers ====================
-
+//Swipe action
bool Game::swipe(kbdh::Direction direction){
+ bool moveDone;
+
switch(direction){
case kbdh::Left:
- m_grid.swipeLeft();
+ moveDone=m_grid.swipeLeft();
break;
case kbdh::Right:
- m_grid.swipeRight();
+ moveDone=m_grid.swipeRight();
break;
case kbdh::Up:
- m_grid.swipeUp();
+ moveDone=m_grid.swipeUp();
break;
case kbdh::Down:
- m_grid.swipeDown();
+ moveDone=m_grid.swipeDown();
break;
}
- return true;
+ if(moveDone){
+ m_score+=m_grid.getLastMoveScore();
+ m_nbMove++;
+ this->popRandomNumber();
+ }
+
+ return moveDone;
}
+//Cout the grid
void Game::coutGrid(){
std::cout << m_grid.description();
}
+//Return true if the game is lost. False else.
bool Game::isOver(){
return m_grid.isOver();
}
+//Pop a random number on the grid
void Game::popRandomNumber(){
std::tuple<int, int> coord(m_grid.getRandomEmptyCellCoord());
- int number=2;
+ int percent=rand() % 100;
+
+ int number;
+
+ if(percent <= 10){
+ number=4;
+ }
+ else{
+ number=2;
+ }
+
m_grid.setCell(coord, number);
}
+//==================== Getters and Setter ====================
+
+//Retrieve the Score
+int Game::getScore(){
+ return m_score;
+}
+
+//Retrieve the number of moves
+int Game::getNbMove(){
+ return m_nbMove;
+}