diff --git a/src/game/morpion.cpp b/src/game/morpion.cpp index 84c5ddba7571ee6b7935967e273b4e1e2378bd46..eba70a629959faa25f5420714c3bd7fab097a715 100644 --- a/src/game/morpion.cpp +++ b/src/game/morpion.cpp @@ -67,7 +67,7 @@ namespace game uint8_t morpion::current_player() const { - return state.total_moves & 1 ? CIRCLE : CROSS; // CROSS pair, CIRCLE impair + return state.total_moves & 1 ? CIRCLE : CROSS; // CROSS even, CIRCLE odd } int morpion::value(uint8_t player) const @@ -91,12 +91,20 @@ namespace game void morpion::update_win() { - //TODO: Implement + if(has_won(state.cross_bitboard)) + state.first_player_win = true; + else if(has_won(state.circle_bitboard)) + state.second_player_win = true; } - bool morpion::has_won(uint64_t bitboard) + bool morpion::has_won(uint16_t bitboard) { - //TODO: Implement + if(bitboard == ROW1_MASK || bitboard == ROW2_MASK || bitboard == ROW3_MASK) // Check vertical | + return true; + if(bitboard == COL1_MASK || bitboard == COL2_MASK || bitboard == COL3_MASK) // Check horizontal _ + return true; + if(bitboard == DIA1_MASK || bitboard == DIA2_MASK) // Chack diagonal \ / + return true; return false; }