mirror of
https://github.com/Noratrieb/minmax.git
synced 2026-01-16 08:15:04 +01:00
player
This commit is contained in:
commit
2fa7531824
8 changed files with 352 additions and 0 deletions
23
src/game.rs
Normal file
23
src/game.rs
Normal 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
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue