diff --git a/src/board/mod.rs b/src/board/mod.rs new file mode 100644 index 0000000000000000000000000000000000000000..80b24fb8fa20d3dcc9fe3ae5d87f713cad50fe11 --- /dev/null +++ b/src/board/mod.rs @@ -0,0 +1,3 @@ +//! A module that implements several board games + +pub mod tictactoe; diff --git a/src/board.rs b/src/board/tictactoe.rs similarity index 72% rename from src/board.rs rename to src/board/tictactoe.rs index 0900f91a000d98b515cf8c18171f62d7d69fd41f..2b9a6b40c4260270fa65e53895224e626e645fc1 100644 --- a/src/board.rs +++ b/src/board/tictactoe.rs @@ -1,5 +1,5 @@ - #[derive(Clone, Copy, Debug, PartialEq)] +/// A Tictactoe square pub enum Square { Empty, Cross, @@ -16,11 +16,12 @@ impl std::fmt::Display for Square { } } -pub struct Board { +/// A TicTacToe board +pub struct TicTacToe { board: [Square; 9], } -impl Board { +impl TicTacToe { /// Creates a new empty board pub fn new() -> Self { Self { @@ -34,14 +35,18 @@ impl Board { } } -impl std::fmt::Display for Board { +impl std::fmt::Display for TicTacToe { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + writeln!(f, " A B C")?; for row in 0..3 { - writeln!(f, " {} | {} | {}", - self.board[row * 3], - self.board[row * 3 + 1], - self.board[row * 3 + 2], - )?; + writeln!( + f, + " {} | {} | {} {}", + self.board[row * 3], + self.board[row * 3 + 1], + self.board[row * 3 + 2], + row + 1, + )?; if row == 0 || row == 1 { writeln!(f, "---+---+---")?; } @@ -53,10 +58,10 @@ impl std::fmt::Display for Board { #[cfg(test)] mod tests { use super::*; - + #[test] fn new_board_squares_are_empty() { - let board = Board::new(); + let board = TicTacToe::new(); for square in board.board { assert_eq!(square, Square::Empty); @@ -65,13 +70,14 @@ mod tests { #[test] fn empty_board_to_string() { - let expected = " . | . | . + let expected = " A B C + . | . | . 1 ---+---+--- - . | . | . + . | . | . 2 ---+---+--- - . | . | . + . | . | . 3 "; - assert_eq!(expected, format!("{}", Board::new())); + assert_eq!(expected, format!("{}", TicTacToe::new())); } #[test] @@ -86,5 +92,4 @@ mod tests { fn circle_square_to_string_big_o() { assert_eq!("O", format!("{}", Square::Circle)); } - } diff --git a/src/main.rs b/src/main.rs index a91e144c9a6189a1da273f4e94b9c05b2766bb54..3b1cd9c27fe29451846cb5d2931bd84e140fce93 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,9 +1,9 @@ mod board; -use board::Board; +use board::tictactoe::TicTacToe; fn main() { - let board = Board::new(); + let board = TicTacToe::new(); board.display(); }