X-Git-Url: http://git.scottworley.com/pluta-lesnura/blobdiff_plain/d5e2b09ad25d4e7e1ab88fa1e15bb33a11bea280..cc2b69f31844bc4967106ec85825d007f6a32c2c:/src/main.rs diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..172d58e --- /dev/null +++ b/src/main.rs @@ -0,0 +1,39 @@ +use clap::{Parser, Subcommand}; +use pluta_lesnura::{play, random_player, Game, Player}; + +#[derive(Parser)] +#[command(author, version, about, long_about = None, arg_required_else_help = true)] +struct Cli { + #[command(subcommand)] + command: Option, +} + +#[derive(Subcommand)] +enum Commands { + /// Runs simulations + Sim { + /// How many players? + #[arg(short, long)] + num_players: usize, + }, +} + +fn main() -> Result<(), &'static str> { + let cli = Cli::parse(); + + match &cli.command { + Some(Commands::Sim { num_players }) => { + let players: Vec<_> = std::iter::from_fn(|| Some(Player::new(random_player))) + .take(*num_players) + .collect(); + let mut game = Game::default(); + for _ in 0..*num_players { + game.add_player(); + } + let result = play(game, players)?; + println!("Result: {result:?}"); + Ok(()) + } + None => unreachable!(), + } +}