Documentation & Tweaks
This commit is contained in:
25
src/cli.rs
25
src/cli.rs
@@ -6,24 +6,39 @@ use crate::{
|
||||
};
|
||||
|
||||
#[derive(Parser, Debug)]
|
||||
#[command(version, about)]
|
||||
#[command(about)]
|
||||
pub struct Cli {
|
||||
pub red: AgentSelector,
|
||||
/// The agent that controls the Blue (opponent) player
|
||||
pub blue: AgentSelector,
|
||||
|
||||
/// The agent that controls the Red (home) player
|
||||
#[arg(long, default_value = "human")]
|
||||
pub red: AgentSelector,
|
||||
|
||||
/// If this is greater than one, repeat the game this many times and print a summary.
|
||||
/// Best used with --silent.
|
||||
#[arg(long, short, default_value = "0")]
|
||||
pub repeat: usize,
|
||||
|
||||
/// If this is given, do not print boards.
|
||||
/// Good for bulk runs with --repeat, bad for human players.
|
||||
#[arg(long, short, default_value = "false")]
|
||||
pub silent: bool,
|
||||
}
|
||||
|
||||
#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, ValueEnum)]
|
||||
pub enum AgentSelector {
|
||||
Random,
|
||||
Diffuse,
|
||||
Minimax,
|
||||
/// A human agent. Asks for input.
|
||||
Human,
|
||||
|
||||
/// A random agent (very easy)
|
||||
Random,
|
||||
|
||||
/// A simple extremum-chaser (easy)
|
||||
Minimax,
|
||||
|
||||
/// A smarter extremum-chaser (medium)
|
||||
Diffuse,
|
||||
}
|
||||
|
||||
impl AgentSelector {
|
||||
|
||||
13
src/main.rs
13
src/main.rs
@@ -59,11 +59,18 @@ fn play(
|
||||
let mut is_first_turn = true;
|
||||
let mut is_maxi_turn = true;
|
||||
|
||||
let board_label = format!(
|
||||
"{}{:6}{}",
|
||||
color::Fg(color::LightBlack),
|
||||
maxi.player().to_string(),
|
||||
color::Fg(color::Reset)
|
||||
);
|
||||
|
||||
while !board.is_done() {
|
||||
// Print board
|
||||
println!(
|
||||
"\r{}{}{}{}",
|
||||
" ".repeat(6),
|
||||
board_label,
|
||||
if is_first_turn { '╓' } else { '║' },
|
||||
board.prettyprint()?,
|
||||
if is_first_turn { '╖' } else { '║' },
|
||||
@@ -99,8 +106,8 @@ fn play(
|
||||
is_maxi_turn = !is_maxi_turn;
|
||||
}
|
||||
|
||||
println!("\r{}║{}║", " ".repeat(6), board.prettyprint()?);
|
||||
println!("\r{}╙{}╜", " ".repeat(6), " ".repeat(board.size()));
|
||||
println!("\r{}║{}║", board_label, board.prettyprint()?);
|
||||
println!("\r{}╙{}╜", board_label, " ".repeat(board.size()));
|
||||
Ok(board)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user