summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormanzerbredes <loic.guegan_secondary@yahoo.fr>2015-05-03 02:02:22 +0200
committermanzerbredes <loic.guegan_secondary@yahoo.fr>2015-05-03 02:02:22 +0200
commit9977050e6ecb92570698bbacac1a82b74e5e87a4 (patch)
treeb80ad6c4e1cbe916bc0175e81afc262e5f1744f7
parent30f603ecd31e5cd849e22bc66d85da2e2d526cc5 (diff)
Add score and nb move(s) support
-rw-r--r--src/Controllers/ConsoleController/ConsoleController.cpp12
-rw-r--r--src/Controllers/ConsoleController/ConsoleController.hpp1
-rw-r--r--src/Model/Game.cpp15
-rw-r--r--src/Model/Game.hpp6
-rw-r--r--src/Model/Grid.cpp10
-rw-r--r--src/Model/Grid.hpp5
6 files changed, 46 insertions, 3 deletions
diff --git a/src/Controllers/ConsoleController/ConsoleController.cpp b/src/Controllers/ConsoleController/ConsoleController.cpp
index 225ed16..39b1073 100644
--- a/src/Controllers/ConsoleController/ConsoleController.cpp
+++ b/src/Controllers/ConsoleController/ConsoleController.cpp
@@ -22,6 +22,9 @@ void ConsoleController::run()
//Pop a random number on the grid
m_game.popRandomNumber();
+
+ this->coutStats();
+
//First cout grid
m_game.coutGrid();
@@ -36,6 +39,9 @@ void ConsoleController::run()
bool moveDone=m_game.swipe(keyPress);
+
+ this->coutStats();
+
//Cout grid
m_game.coutGrid();
@@ -100,3 +106,9 @@ void ConsoleController::clearScreen(){
std::cout << std::endl;
}
}
+
+void ConsoleController::coutStats(){
+
+ std::cout << std::endl << "Score : " << m_game.getScore() << std::endl;
+ std::cout << "Nombre de coups : " << m_game.getNbMove() << std::endl;
+}
diff --git a/src/Controllers/ConsoleController/ConsoleController.hpp b/src/Controllers/ConsoleController/ConsoleController.hpp
index f2c19b8..59d4bb3 100644
--- a/src/Controllers/ConsoleController/ConsoleController.hpp
+++ b/src/Controllers/ConsoleController/ConsoleController.hpp
@@ -22,6 +22,7 @@ class ConsoleController
~ConsoleController();
void run();
void clearScreen();
+ void coutStats();
};
#endif
diff --git a/src/Model/Game.cpp b/src/Model/Game.cpp
index 2ac665f..d75fa32 100644
--- a/src/Model/Game.cpp
+++ b/src/Model/Game.cpp
@@ -2,7 +2,7 @@
-Game::Game() : m_grid(){
+Game::Game() : m_grid(), m_score(0), m_nbMove(0){
}
Game::~Game(){
@@ -30,8 +30,11 @@ bool Game::swipe(kbdh::Direction direction){
break;
}
- if(moveDone)
+ if(moveDone){
+ m_score+=m_grid.getLastMoveScore();
+ m_nbMove++;
this->popRandomNumber();
+ }
return moveDone;
}
@@ -62,3 +65,11 @@ void Game::popRandomNumber(){
m_grid.setCell(coord, number);
}
+
+int Game::getScore(){
+ return m_score;
+}
+
+int Game::getNbMove(){
+ return m_nbMove;
+}
diff --git a/src/Model/Game.hpp b/src/Model/Game.hpp
index 040885d..bb8b995 100644
--- a/src/Model/Game.hpp
+++ b/src/Model/Game.hpp
@@ -17,7 +17,8 @@ class Game
{
private:
Grid m_grid;
-
+ int m_score;
+ int m_nbMove;
public:
Game();
~Game();
@@ -26,6 +27,9 @@ class Game
void coutGrid();
void popRandomNumber();
bool isOver();
+
+ int getScore();
+ int getNbMove();
};
#endif
diff --git a/src/Model/Grid.cpp b/src/Model/Grid.cpp
index 7d7e6a7..b1b9dda 100644
--- a/src/Model/Grid.cpp
+++ b/src/Model/Grid.cpp
@@ -158,6 +158,7 @@ std::vector<int> Grid::rightMerge(std::vector<int> line){
if(val1==val2){
line.at(i)=0;
line.at(i+1)=val1*2;
+ m_lastMoveScore+=val1*2;
i++;
}
}
@@ -172,6 +173,7 @@ std::vector<int> Grid::leftMerge(std::vector<int> line){
if(val1==val2){
line.at(i)=0;
line.at(i-1)=val1*2;
+ m_lastMoveScore+=val1*2;
i--;
}
}
@@ -195,6 +197,7 @@ std::vector<int> Grid::swipeLine(std::vector<int> line){
//Swipe to right
bool Grid::swipeRight(){
+ m_lastMoveScore=0;
bool moveDone=false;
for(int i=0; i<m_size;i++){
std::vector<int> swipedLine(this->rightDefragment(this->leftMerge(this->rightDefragment(m_grid.at(i)))));
@@ -209,6 +212,7 @@ bool Grid::swipeRight(){
//Swipe to right
bool Grid::swipeLeft(){
+ m_lastMoveScore=0;
bool moveDone=false;
for(int i=0; i<m_size;i++){
std::vector<int> swipedLine(this->leftDefragment(this->rightMerge(this->leftDefragment(m_grid.at(i)))));
@@ -222,6 +226,7 @@ bool Grid::swipeLeft(){
bool Grid::swipeUp(){
+ m_lastMoveScore=0;
bool moveDone=false;
for(int i=0; i<m_size;i++){
std::vector<int> colVect=this->getCol(i);
@@ -235,6 +240,7 @@ bool Grid::swipeUp(){
return moveDone;
}
bool Grid::swipeDown(){
+ m_lastMoveScore=0;
bool moveDone=false;
for(int i=0; i<m_size;i++){
std::vector<int> colVect=this->getCol(i);
@@ -324,3 +330,7 @@ bool Grid::compareLines(std::vector<int> line1, std::vector<int> line2){
}
return true;
}
+
+int Grid::getLastMoveScore(){
+ return m_lastMoveScore;
+}
diff --git a/src/Model/Grid.hpp b/src/Model/Grid.hpp
index 09f3e5e..4ed5c10 100644
--- a/src/Model/Grid.hpp
+++ b/src/Model/Grid.hpp
@@ -18,7 +18,10 @@ class Grid
int m_size;
std::vector<std::vector<int> > m_grid;
+ int m_lastMoveScore;
+
int maxStrLenInGrid();
+
public:
Grid();
~Grid();
@@ -50,6 +53,8 @@ class Grid
bool swipeLeft();
bool swipeUp();
bool swipeDown();
+
+ int getLastMoveScore();
};