From: Scott Worley Date: Tue, 18 Jul 2023 19:41:26 +0000 (-0700) Subject: Composable strategies X-Git-Url: http://git.scottworley.com/pluta-lesnura/commitdiff_plain/a3618af613fa7924894205f1983468250d3680cd?ds=sidebyside Composable strategies --- diff --git a/src/lib.rs b/src/lib.rs index 1ee5f0b..8f7949a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -440,10 +440,9 @@ pub fn random_player(draw_chance: f64) -> Player { })) } -/// When available, make plays that grant momentum. Otherwise, play randomly. +/// When available, make plays that grant momentum. #[must_use] -pub fn momentum_player(draw_chance: f64) -> Player { - let mut fallback = random_player(draw_chance); +pub fn momentum_player(mut fallback: Player) -> Player { Player(Box::new(move |game: &Game| -> Play { match (&game.phase, game.discard.top().and_then(Card::suit)) { (Phase::Play, Some(suit)) => { diff --git a/src/main.rs b/src/main.rs index c7d5533..31d9587 100644 --- a/src/main.rs +++ b/src/main.rs @@ -45,7 +45,7 @@ fn main() -> Result<(), &'static str> { }) => { let player = || match strategy { Strategy::Random => random_player(*draw_chance), - Strategy::Momentum => momentum_player(*draw_chance), + Strategy::Momentum => momentum_player(random_player(*draw_chance)), }; for _ in 0..*num_games { let players: Vec<_> = std::iter::from_fn(|| Some(player()))