use backgammon::rules::Player::{Player0, Player1};
use backgammon::rules::prelude::*;
fn main() {
println!(
"--> Do not use this example to create a Backgammon game! This is only for illustrative purposes."
);
println!("--> Never play on the board struct but use the game or match structs.");
println!();
let mut board = Board::default();
board.set_dice(Player0, (3, 1)).unwrap();
println!("Player 0 rolls the following dice: {:?}", board.get_dice());
let m = board.available_moves(Player::Player0);
assert_eq!(
m,
Ok(vec![
vec![
(Position::Board(6), Position::Board(3)),
(Position::Board(3), Position::Board(2))
],
vec![
(Position::Board(6), Position::Board(3)),
(Position::Board(6), Position::Board(5))
],
vec![
(Position::Board(6), Position::Board(3)),
(Position::Board(8), Position::Board(7))
],
vec![
(Position::Board(6), Position::Board(3)),
(Position::Board(24), Position::Board(23))
],
vec![
(Position::Board(8), Position::Board(5)),
(Position::Board(5), Position::Board(4))
],
vec![
(Position::Board(8), Position::Board(5)),
(Position::Board(6), Position::Board(5))
],
vec![
(Position::Board(8), Position::Board(5)),
(Position::Board(8), Position::Board(7))
],
vec![
(Position::Board(8), Position::Board(5)),
(Position::Board(24), Position::Board(23))
],
vec![
(Position::Board(13), Position::Board(10)),
(Position::Board(6), Position::Board(5))
],
vec![
(Position::Board(13), Position::Board(10)),
(Position::Board(8), Position::Board(7))
],
vec![
(Position::Board(13), Position::Board(10)),
(Position::Board(10), Position::Board(9))
],
vec![
(Position::Board(13), Position::Board(10)),
(Position::Board(24), Position::Board(23))
],
vec![
(Position::Board(24), Position::Board(21)),
(Position::Board(6), Position::Board(5))
],
vec![
(Position::Board(24), Position::Board(21)),
(Position::Board(8), Position::Board(7))
],
vec![
(Position::Board(24), Position::Board(21)),
(Position::Board(21), Position::Board(20))
],
vec![
(Position::Board(24), Position::Board(21)),
(Position::Board(24), Position::Board(23))
],
vec![
(Position::Board(6), Position::Board(5)),
(Position::Board(5), Position::Board(2))
],
vec![
(Position::Board(6), Position::Board(5)),
(Position::Board(6), Position::Board(3))
],
vec![
(Position::Board(6), Position::Board(5)),
(Position::Board(8), Position::Board(5))
],
vec![
(Position::Board(6), Position::Board(5)),
(Position::Board(13), Position::Board(10))
],
vec![
(Position::Board(6), Position::Board(5)),
(Position::Board(24), Position::Board(21))
],
vec![
(Position::Board(8), Position::Board(7)),
(Position::Board(6), Position::Board(3))
],
vec![
(Position::Board(8), Position::Board(7)),
(Position::Board(7), Position::Board(4))
],
vec![
(Position::Board(8), Position::Board(7)),
(Position::Board(8), Position::Board(5))
],
vec![
(Position::Board(8), Position::Board(7)),
(Position::Board(13), Position::Board(10))
],
vec![
(Position::Board(8), Position::Board(7)),
(Position::Board(24), Position::Board(21))
],
vec![
(Position::Board(24), Position::Board(23)),
(Position::Board(6), Position::Board(3))
],
vec![
(Position::Board(24), Position::Board(23)),
(Position::Board(8), Position::Board(5))
],
vec![
(Position::Board(24), Position::Board(23)),
(Position::Board(13), Position::Board(10))
],
vec![
(Position::Board(24), Position::Board(23)),
(Position::Board(23), Position::Board(20))
],
vec![
(Position::Board(24), Position::Board(23)),
(Position::Board(24), Position::Board(21))
],
])
);
board
.move_checkers(
Player::Player0,
vec![
(Position::Board(24), Position::Board(23)),
(Position::Board(8), Position::Board(5)),
],
)
.unwrap();
let display = board.get_board();
println!("{}", display);
board.set_dice(Player1, (4, 1)).unwrap();
println!("Player 1 rolls the following dice: {:?}", board.get_dice());
board
.move_checkers(
Player::Player1,
vec![
(Position::Board(24), Position::Board(20)),
(Position::Board(24), Position::Board(23)),
],
)
.unwrap();
let display = board.get_board();
println!("{}", display);
assert_eq!(
"Board: [0, -1, 0, 0, -1, 5, 0, 2, 0, 0, 0, -5, 5, 0, 0, 0, -3, 0, -5, 0, 0, 0, 1, 1], Bar: (1, 0), Off: (0, 0), Dice: (4, 1)",
display.to_string()
);
}