This commit is contained in:
nora 2022-10-31 14:37:52 +01:00
commit 2fa7531824
No known key found for this signature in database
8 changed files with 352 additions and 0 deletions

23
src/game.rs Normal file
View file

@ -0,0 +1,23 @@
use crate::{board::Player, Board, GamePlayer};
impl Board {
pub fn play<A: GamePlayer, B: GamePlayer>(&mut self, a: &mut A, b: &mut B) -> Option<Player> {
let mut current_player = Player::X;
for _ in 0..9 {
if current_player == Player::X {
a.next_move(self, current_player);
} else {
b.next_move(self, current_player);
}
if let Some(winner) = self.result() {
return Some(winner);
}
current_player = current_player.opponent();
}
None
}
}