From 1e73f1d30b32df8a0ace4e5e1dc9ed2cb18e78ce Mon Sep 17 00:00:00 2001
From: Francesco Bariatti <francesco.bariatti@insa-rennes.fr>
Date: Mon, 7 Mar 2016 12:01:58 +0100
Subject: [PATCH] Bugfix: wrong move number chosen

---
 src/game/penguin.cpp | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/src/game/penguin.cpp b/src/game/penguin.cpp
index e6f3e30..b10429e 100644
--- a/src/game/penguin.cpp
+++ b/src/game/penguin.cpp
@@ -181,7 +181,7 @@ namespace game
 		if((penguin_copy & 7) >= move_number)
 		{
 			//Move direction A
-			(*p) = (7 * move_number) + ((*p) & 63);
+			(*p) = (7 * move_number +1) + ((*p) & 63);
 			return;
 		}
 		move_number -= penguin_copy & 7;
@@ -189,7 +189,7 @@ namespace game
 		if((penguin_copy & 7) >= move_number)
 		{
 			//Move direction B
-			(*p) = (-1 * move_number) + ((*p) & 63);
+			(*p) = (-1 * move_number +1) + ((*p) & 63);
 			return;
 		}
 		move_number -= penguin_copy & 7;
@@ -197,7 +197,7 @@ namespace game
 		if((penguin_copy & 7) >= move_number)
 		{
 			//Move direction C
-			(*p) = (-8 * move_number) + ((*p) & 63);
+			(*p) = (-8 * move_number +1) + ((*p) & 63);
 			return;
 		}
 		move_number -= penguin_copy & 7;
@@ -205,7 +205,7 @@ namespace game
 		if((penguin_copy & 7) >= move_number)
 		{
 			//Move direction D
-			(*p) = (-7 * move_number) + ((*p) & 63);
+			(*p) = (-7 * move_number +1) + ((*p) & 63);
 			return;
 		}
 		move_number -= penguin_copy & 7;
@@ -213,13 +213,13 @@ namespace game
 		if((penguin_copy & 7) >= move_number)
 		{
 			//Move direction E
-			(*p) = (1 * move_number) + ((*p) & 63);
+			(*p) = (1 * move_number +1) + ((*p) & 63);
 			return;
 		}
 		move_number -= penguin_copy & 7;
 		penguin_copy = penguin_copy >> 3;
 		//Move direction F
-		(*p) = (8 * move_number) + ((*p) & 63);
+		(*p) = (8 * move_number +1) + ((*p) & 63);
 	}
 	
 	int penguin::update_moves(uint32_t* p, uint64_t obstacles)
@@ -328,6 +328,8 @@ namespace game
 		//Move the current penguin
 		move_penguin(p);
 		
+		cout << "Penguin p :" << *p << endl;
+		
 		//Update moves on all penguins
 		uint64_t obstacles = (~(state.one_fish | state.two_fish | state.three_fish));
 		obstacles |= ((uint64_t) 1) << (state.p1_red & 63);
@@ -339,6 +341,8 @@ namespace game
 		obstacles |= ((uint64_t) 1) << (state.p3_blue & 63);
 		obstacles |= ((uint64_t) 1) << (state.p4_blue & 63);
 		
+		cout << obstacles;
+		
 		state.nb_moves_red = 0;
 		state.nb_moves_blue = 0;
 		state.nb_moves_red += update_moves(&state.p1_red, obstacles);
-- 
GitLab