diff --git a/perf.data b/perf.data deleted file mode 100644 index 16b2060..0000000 Binary files a/perf.data and /dev/null differ diff --git a/perf.data.old b/perf.data.old deleted file mode 100644 index cbf50b5..0000000 Binary files a/perf.data.old and /dev/null differ diff --git a/src/connect4/board.rs b/src/connect4/board.rs new file mode 100644 index 0000000..d44c396 --- /dev/null +++ b/src/connect4/board.rs @@ -0,0 +1,39 @@ +use std::ops::ControlFlow; + +use crate::Player; + +type Position = Option; + +const BOARD_WIDTH: usize = 7; +const BOARD_HEIGHT: usize = 4; +const BOARD_POSITIONS: usize = BOARD_WIDTH * BOARD_HEIGHT; + +struct Winner(Option); + +impl std::ops::Try for Winner { + // Always None + type Output = Winner; + + type Residual = Winner; + + fn from_output(_: Self::Output) -> Self { + Self(None) + } + + fn branch(self) -> ControlFlow { + match self { + Self(Some(_)) => ControlFlow::Break(self), + Self(None) => ControlFlow::Continue(self), + } + } +} + +struct Board { + positions: [Position; BOARD_POSITIONS], +} + +impl Board { + fn winner() -> Winner { + todo!() + } +} diff --git a/src/connect4/mod.rs b/src/connect4/mod.rs new file mode 100644 index 0000000..1a9bdc2 --- /dev/null +++ b/src/connect4/mod.rs @@ -0,0 +1 @@ +mod board; \ No newline at end of file diff --git a/src/lib.rs b/src/lib.rs index ec310c7..8555553 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,4 +1,7 @@ +#![feature(never_type, try_trait_v2)] + mod board; +mod connect4; mod game; mod perfect; diff --git a/src/main.rs b/src/main.rs index 142795b..a04ff3c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -9,7 +9,7 @@ fn main() { let start = SystemTime::now(); - for _ in 0..1000 { + for _ in 0..1 { let result = play_round::(false); let idx = Player::as_u8(result); results[idx as usize] += 1; @@ -29,17 +29,17 @@ fn play_round(print: bool) -> Option { let mut board = Board::empty(); let result = board.play(&mut X::default(), &mut O::default()); if print { - //println!("{board}"); + println!("{board}"); } match result { Some(winner) => { if print { - //println!("player {winner} won!"); + println!("player {winner} won!"); } } None => { if print { - //println!("a draw...") + println!("a draw...") } } }