mirror of
https://github.com/Noratrieb/minmax.git
synced 2026-01-14 23:35:04 +01:00
slowly working
This commit is contained in:
parent
b666c4a0cb
commit
43d39fba30
7 changed files with 227 additions and 34 deletions
33
src/lib.rs
33
src/lib.rs
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue