cache winner in Move
This commit is contained in:
11
src/board.rs
11
src/board.rs
@@ -201,17 +201,12 @@ impl Board {
|
||||
}
|
||||
|
||||
pub fn game_winner(&self, turn: Piece) -> Option<Piece> {
|
||||
let (white_score, black_score) = self.get_score();
|
||||
let max_score = BOARD_SIZE * BOARD_SIZE;
|
||||
let combined_score = black_score + white_score;
|
||||
if max_score != combined_score {
|
||||
if self.possible_moves(turn).count() > 0 {
|
||||
// player can still make a move, there is no winner
|
||||
return None;
|
||||
}
|
||||
|
||||
// if current player cannot make a move
|
||||
if self.possible_moves(turn).count() > 0 {
|
||||
return None;
|
||||
}
|
||||
let (white_score, black_score) = self.get_score();
|
||||
match white_score.cmp(&black_score) {
|
||||
Ordering::Greater => Some(Piece::White), // White win
|
||||
Ordering::Less => Some(Piece::Black), // Black win
|
||||
|
||||
Reference in New Issue
Block a user