pub struct Game {
pub boards: [[Board; 3]; 3],
pub current_player: Player,
pub last_move_cords: Option<(usize, usize)>,
}
Expand description
Represents the 9x9 super Tic Tac Toe game. X
starts
§Example
let mut game = Game::new();
game.make_move(0, 0, 1, 1).unwrap();
game.make_move(1, 1, 0, 0).unwrap();
game.make_move(0, 0, 2, 2).unwrap();
game.make_move(2, 2, 0, 2).unwrap();
game.make_move(0, 2, 1, 0).unwrap();
match game.get_winner() {
super_ttt::GameState::Winner(player) => {
println!("Player {:?} wins!", player);
}
super_ttt::GameState::Tie => {
println!("It's a tie!");
}
super_ttt::GameState::InProgress => {
println!("The game is still in progress.");
}
}
This is essentially just a game state with some relevant methods attached to it.
Fields§
§boards: [[Board; 3]; 3]
Self explanatory. Public to allow implementations of display methods
current_player: Player
The current player that will make the move when Game::make_move
is called
last_move_cords: Option<(usize, usize)>
The coordinates of the last move made by a player.
Implementations§
Source§impl Game
impl Game
Sourcepub fn make_move(
&mut self,
board_row: usize,
board_col: usize,
cell_row: usize,
cell_col: usize,
) -> Result<Self, InvalidMoveError>
pub fn make_move( &mut self, board_row: usize, board_col: usize, cell_row: usize, cell_col: usize, ) -> Result<Self, InvalidMoveError>
Make a move on the game. This method will also swap the Game::current_player
Sourcepub fn get_winner(&self) -> GameState
pub fn get_winner(&self) -> GameState
Get the winner of the game, if any
Trait Implementations§
impl Copy for Game
impl Eq for Game
impl StructuralPartialEq for Game
Auto Trait Implementations§
impl Freeze for Game
impl RefUnwindSafe for Game
impl Send for Game
impl Sync for Game
impl Unpin for Game
impl UnwindSafe for Game
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more