From 57ebf4913cecc71290553367770255524a06c539 Mon Sep 17 00:00:00 2001 From: Francesco Bariatti <francesco.bariatti@insa-rennes.fr> Date: Wed, 16 Mar 2016 17:04:18 +0100 Subject: [PATCH] Bugfix in number of moves that wasn't counted starting from 0 --- src/game/penguin.cpp | 25 ++++++++++++------------- tools/drawState.py | 5 +++-- tools/gui.py | 4 ++-- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/game/penguin.cpp b/src/game/penguin.cpp index ccd9f05..dde9a87 100644 --- a/src/game/penguin.cpp +++ b/src/game/penguin.cpp @@ -91,8 +91,7 @@ namespace game /* Number of moves that you can play */ uint16_t penguin::number_of_moves() const { - //return 9 - state.total_moves; - return 0; + return state.current_player_red ? state.nb_moves_red : state.nb_moves_blue; } /* The penguin that will move if we want to play the #move_number move in the list of possible moves. @@ -178,48 +177,48 @@ namespace game uint8_t move_number = ((*p) >> 6) & 63; //Move number for the current penguin uint32_t penguin_copy = (*p) >> 12; //Direction A - if((penguin_copy & 7) >= move_number) + if((penguin_copy & 7) > move_number) { //Move direction A - (*p) = (7 * move_number +1) + ((*p) & 63); + (*p) = (7 * (move_number +1)) + ((*p) & 63); return; } move_number -= penguin_copy & 7; penguin_copy = penguin_copy >> 3; - if((penguin_copy & 7) >= move_number) + if((penguin_copy & 7) > move_number) { //Move direction B - (*p) = (-1 * move_number +1) + ((*p) & 63); + (*p) = (-1 * (move_number +1)) + ((*p) & 63); return; } move_number -= penguin_copy & 7; penguin_copy = penguin_copy >> 3; - if((penguin_copy & 7) >= move_number) + if((penguin_copy & 7) > move_number) { //Move direction C - (*p) = (-8 * move_number +1) + ((*p) & 63); + (*p) = (-8 * (move_number +1)) + ((*p) & 63); return; } move_number -= penguin_copy & 7; penguin_copy = penguin_copy >> 3; - if((penguin_copy & 7) >= move_number) + if((penguin_copy & 7) > move_number) { //Move direction D - (*p) = (-7 * move_number +1) + ((*p) & 63); + (*p) = (-7 * (move_number +1)) + ((*p) & 63); return; } move_number -= penguin_copy & 7; penguin_copy = penguin_copy >> 3; - if((penguin_copy & 7) >= move_number) + if((penguin_copy & 7) > move_number) { //Move direction E - (*p) = (1 * move_number +1) + ((*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 +1) + ((*p) & 63); + (*p) = (8 * (move_number +1)) + ((*p) & 63); } int penguin::update_moves(uint32_t* p, uint64_t obstacles) diff --git a/tools/drawState.py b/tools/drawState.py index ee01d4a..8479eb1 100755 --- a/tools/drawState.py +++ b/tools/drawState.py @@ -30,9 +30,10 @@ def drawPenguin(penguin): "D" : str((penguin >> 21) & 7), "E" : str((penguin >> 24) & 7), "F" : str((penguin >> 27) & 7), - "tot" : str((penguin >> 6) & 63).rjust(2) + "tot" : str((penguin >> 6) & 63).rjust(2), + "tot-1": str(max(((penguin >> 6) & 63)-1, 0)).rjust(2) } - print("Pos: {pos}, A:{A}, B:{B}, C:{C}, D:{D}, E:{E}, F:{F}, Tot: {tot}".format(**args)) + print("Pos: {pos}, A:{A}, B:{B}, C:{C}, D:{D}, E:{E}, F:{F}, Tot: {tot} [0..{tot-1}]".format(**args)) if __name__ == "__main__": try: diff --git a/tools/gui.py b/tools/gui.py index 3d50e59..9066a56 100755 --- a/tools/gui.py +++ b/tools/gui.py @@ -32,10 +32,10 @@ if __name__ == "__main__": print("Comments: {}".format(''.join(comments))) state = json.loads(''.join(json_data)) drawState.drawBitboard(state["bitboards"]["onefish"],state["bitboards"]["twofish"],state["bitboards"]["threefish"]) - print("Red penguins (Red score: {}, Total moves: {})".format(state["score"]["red"], state["nb_moves"]["red"])) + print("Red penguins (Red score: {}, Total moves: {} [0..{}])".format(state["score"]["red"], state["nb_moves"]["red"], state["nb_moves"]["red"]-1)) for i in range(4): drawState.drawPenguin(state["penguins"]["red"][i]) - print("Blue penguins (Blue score: {}, Total moves: {})".format(state["score"]["blue"], state["nb_moves"]["blue"])) + print("Blue penguins (Blue score: {}, Total moves: {} [0..{}])".format(state["score"]["blue"], state["nb_moves"]["blue"], state["nb_moves"]["blue"] -1)) for i in range(4): drawState.drawPenguin(state["penguins"]["blue"][i]) #PLAY NEXT MOVE -- GitLab