]> git.scottworley.com Git - pluta-lesnura/blobdiff - src/main.rs
Play multiple games per run
[pluta-lesnura] / src / main.rs
index 172d58e742ae7c2c5b7fa06bab428ba71b50939c..16bb4f790910ff5e2be89ac6a50d211a8abae850 100644 (file)
@@ -12,8 +12,11 @@ struct Cli {
 enum Commands {
     /// Runs simulations
     Sim {
+        /// How many games?
+        #[arg(short = 'g', long, default_value_t = 1)]
+        num_games: usize,
         /// How many players?
-        #[arg(short, long)]
+        #[arg(short = 'p', long)]
         num_players: usize,
     },
 }
@@ -22,16 +25,21 @@ 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();
+        Some(Commands::Sim {
+            num_games,
+            num_players,
+        }) => {
+            for _ in 0..*num_games {
+                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:?}");
             }
-            let result = play(game, players)?;
-            println!("Result: {result:?}");
             Ok(())
         }
         None => unreachable!(),