diff --git a/src/game/morpion.cpp b/src/game/morpion.cpp index 0934698f84c92fb6b83edc3ea651182b83a44d7f..13c09b72f2a83e73499e3bd3f27952ad7ffdc3e4 100644 --- a/src/game/morpion.cpp +++ b/src/game/morpion.cpp @@ -112,12 +112,20 @@ namespace game return false; } - /* + void morpion::update_moves(uint16_t move) { - //TODO: Implement + uint16_t free_bitboard = ~(state.cross_bitboard | state.circle_bitboard); + for(int i = 0; i <=8; i++) + { + if(free_bitboard & 1) + { + state.possible_moves += i; + state.possible_moves << 4; + } + free_bitboard = free_bitboard >> 1; + } } - */ void morpion::play(uint16_t m) { diff --git a/src/game/morpion.hpp b/src/game/morpion.hpp index f8c7cc7d3222a95512d0522e2a40a79881bb412c..17552e46595765c61dd6736a30c5d4d4aac60352 100644 --- a/src/game/morpion.hpp +++ b/src/game/morpion.hpp @@ -50,6 +50,7 @@ namespace game inline void update_win(); //Check if someone won and update the state inline bool has_won(uint16_t bitboard); //Check if the player whose bitboard was passed as a param has won inline bool get(uint16_t bitboard, uint8_t i, uint8_t j) const; //Get a case of the board + inline void update_moves(uint16_t move); //Update the list of all possible moves const uint8_t CROSS = 0; const uint8_t CIRCLE = 1;