diff --git a/bot/src/lib.rs b/bot/src/lib.rs index bb28411..f8e3c23 100644 --- a/bot/src/lib.rs +++ b/bot/src/lib.rs @@ -10,6 +10,7 @@ pub trait BotStrategy: std::fmt::Debug { fn calculate_adv_points(&self) -> u8; fn choose_move(&self) -> (CheckerMove, CheckerMove); fn set_player_id(&mut self, player_id: PlayerId); + fn set_color(&mut self, color: Color); fn init_players(&mut self) { self.get_mut_game().init_player("p1"); self.get_mut_game().init_player("p2"); @@ -47,6 +48,7 @@ impl Bot { Color::Black => 2, }; strategy.set_player_id(player_id); + strategy.set_color(color); Self { player_id, strategy, @@ -58,10 +60,6 @@ impl Bot { pub fn handle_event(&mut self, event: &GameEvent) -> Option { let game = self.strategy.get_mut_game(); game.consume(event); - // println!( - // "bot player_id {:?} (active player_id {:?})", - // self.player_id, game.active_player_id - // ); if game.active_player_id == self.player_id { return match game.turn_stage { TurnStage::MarkAdvPoints => Some(GameEvent::Mark { diff --git a/bot/src/strategy/client.rs b/bot/src/strategy/client.rs index 90b13bf..e4ceae8 100644 --- a/bot/src/strategy/client.rs +++ b/bot/src/strategy/client.rs @@ -30,6 +30,10 @@ impl BotStrategy for ClientStrategy { self.player_id = player_id; } + fn set_color(&mut self, color: Color) { + self.color = color; + } + fn calculate_points(&self) -> u8 { let dice_roll_count = self .get_game() diff --git a/bot/src/strategy/default.rs b/bot/src/strategy/default.rs index 53a96de..eac791c 100644 --- a/bot/src/strategy/default.rs +++ b/bot/src/strategy/default.rs @@ -26,6 +26,10 @@ impl BotStrategy for DefaultStrategy { &mut self.game } + fn set_color(&mut self, color: Color) { + self.color = color; + } + fn set_player_id(&mut self, player_id: PlayerId) { self.player_id = player_id; } diff --git a/client_cli/src/game_runner.rs b/client_cli/src/game_runner.rs index 8639916..bd18e50 100644 --- a/client_cli/src/game_runner.rs +++ b/client_cli/src/game_runner.rs @@ -20,7 +20,11 @@ impl GameRunner { ) -> Self { let mut state = GameState::new(schools_enabled); // local : player - let player_id: Option = state.init_player("myself"); + let player_id: Option = if bot_strategies.len() > 1 { + None + } else { + state.init_player("myself") + }; // bots let bots: Vec = bot_strategies @@ -74,7 +78,6 @@ impl GameRunner { let mut next_event = None; for bot_event in bot_events { - println!("bot event {:?}", bot_event); let bot_result_event = self.handle_event(&bot_event); if let Some(bot_id) = bot_event.player_id() { next_event = if self.bot_needs_dice_roll(bot_id) {