From 7bbf54c104bb8f7b43e6ef9553aae97397f5fd8f Mon Sep 17 00:00:00 2001
From: Francesco Bariatti <francesco.bariatti@insa-rennes.fr>
Date: Mon, 29 Feb 2016 14:24:47 +0100
Subject: [PATCH] Created trivial functions

---
 src/game/penguin.cpp | 37 ++++++++++++++-----------------------
 src/game/penguin.hpp |  9 ++++++---
 2 files changed, 20 insertions(+), 26 deletions(-)

diff --git a/src/game/penguin.cpp b/src/game/penguin.cpp
index 6940cf7..b454264 100644
--- a/src/game/penguin.cpp
+++ b/src/game/penguin.cpp
@@ -26,47 +26,39 @@ namespace game
 
 	bool penguin::end_of_game() const
 	{
-		return false;
-		//return state.first_player_win || state.second_player_win || state.total_moves == 9;
+		return state.nb_moves_red == 0 && state.nb_moves_blue == 0;
 	}
 
 	bool penguin::won(std::uint8_t player) const
 	{
-		return false;
-		//if (player == CROSS) return state.first_player_win;
-		//return state.second_player_win;
+		if (player == RED) return state.score_red > state.score_blue;
+		return state.score_blue > state.score_red;
 	}
 	
 	bool penguin::lost(std::uint8_t player) const
 	{
-		return false;
-		/*if (player == CIRCLE) return state.first_player_win;
-		return state.second_player_win;*/
+		if(player == RED) return state.score_red < state.score_blue;
+		return state.score_blue < state.score_red;
 	}
 
 	bool penguin::draw(std::uint8_t player) const
 	{
-		return false;
-		/*if (state.first_player_win || state.second_player_win) return false;
-		return state.total_moves == 9;*/
+		return state.score_blue == state.score_red;
 	}
 
 	uint8_t penguin::current_player() const
 	{
-		return 0;
-		/*return state.total_moves & 1 ? CIRCLE : CROSS; // CROSS even, CIRCLE odd*/
+		return state.current_player_red ? RED : BLUE;
 	} 
 
 	int penguin::value(uint8_t player) const
 	{
-		/*if (player == CROSS) {
-			return state.first_player_win ? 1 : (state.second_player_win ? -1 : 0);
-		}
-		else if (player == CIRCLE) {
-			return state.second_player_win ? 1 : (state.first_player_win ? -1 : 0);
-		}
-		return 0;*/
-		return 0;
+		if (won(player))
+			return 1;
+		else if (lost(player))
+			return -1;
+		else
+			return 0;
 	}
 
 	/* Number of moves that you can play */
@@ -98,8 +90,7 @@ namespace game
 	
 	string penguin::player_to_string(uint8_t player) const
 	{
-		//return player == CROSS ? "X" : (player == CIRCLE ? "O" : " ");
-		return "TODO";
+		return player == RED ? "Red" : "Blue";
 	}
 	
 	
diff --git a/src/game/penguin.hpp b/src/game/penguin.hpp
index 620c6e6..c9c8c0a 100644
--- a/src/game/penguin.hpp
+++ b/src/game/penguin.hpp
@@ -25,13 +25,13 @@ namespace game
 		uint32_t p3_blue = 58;
 		uint32_t p4_blue = 59;
 		
-		bool red_player_win = false;
-		bool blue_player_win = false;
-		
 		int score_red = 0;
 		int score_blue = 0;
 		
 		bool current_player_red = true; //True if red must play now
+		
+		int nb_moves_red = 0; //Number of moves the red player can play
+		int nb_moves_blue = 0;
 	};
 	
 	class penguin : public game<penguin_state>
@@ -63,6 +63,9 @@ namespace game
 		private:
 			penguin_state state;
 			
+			uint8_t RED = 0;
+			uint8_t BLUE = 1;
+			
 	};
 	std::ostream& operator<<(std::ostream& os, const penguin& pen);
 }
-- 
GitLab