slowly working

This commit is contained in:
nora 2022-10-31 15:45:56 +01:00
parent b666c4a0cb
commit 43d39fba30
No known key found for this signature in database
7 changed files with 227 additions and 34 deletions

View file

@ -1,16 +1,17 @@
mod board;
mod game;
mod minmax;
use std::io::Write;
use board::Player;
pub use board::Board;
pub use board::{Board, Player, State};
pub use minmax::PerfectPlayer;
pub trait GamePlayer {
fn next_move(&mut self, board: &mut Board, this_player: Player);
}
#[derive(Clone)]
pub struct GreedyPlayer;
impl GamePlayer for GreedyPlayer {
@ -20,6 +21,7 @@ impl GamePlayer for GreedyPlayer {
}
}
#[derive(Clone)]
pub struct HumanPlayer;
impl GamePlayer for HumanPlayer {
@ -48,3 +50,28 @@ impl GamePlayer for HumanPlayer {
}
}
}
#[derive(Clone)]
pub struct RandomPlayer;
fn fun_random() -> u64 {
use std::hash::{BuildHasher, Hasher};
std::collections::hash_map::RandomState::new()
.build_hasher()
.finish()
}
impl GamePlayer for RandomPlayer {
fn next_move(&mut self, board: &mut Board, this_player: Player) {
loop {
let next = (fun_random() % 9) as usize;
match board.get(next) {
Some(_) => {}
None => {
board.set(next, Some(this_player));
return;
}
}
}
}
}