From eacb65f120ca0fcbd920f14160404cb6c709b4ef Mon Sep 17 00:00:00 2001 From: Justin Worthe Date: Mon, 14 May 2018 23:31:07 +0200 Subject: Added running total of unoccupied cells --- src/strategy/monte_carlo.rs | 11 ++++------- src/strategy/sample.rs | 5 ++--- 2 files changed, 6 insertions(+), 10 deletions(-) (limited to 'src/strategy') diff --git a/src/strategy/monte_carlo.rs b/src/strategy/monte_carlo.rs index 59e86a6..6f0f681 100644 --- a/src/strategy/monte_carlo.rs +++ b/src/strategy/monte_carlo.rs @@ -60,15 +60,13 @@ fn simulate_to_endstate(command_score: &mut CommandScore, settings: &Gam } fn random_player_move(settings: &GameSettings, state: &GameState, rng: &mut R) -> Command { - let all_positions = state.unoccupied_player_cells(settings); let all_buildings = state.player_affordable_buildings(settings); - random_move(&all_positions, &all_buildings, rng) + random_move(&state.unoccupied_player_cells, &all_buildings, rng) } fn random_opponent_move(settings: &GameSettings, state: &GameState, rng: &mut R) -> Command { - let all_positions = state.unoccupied_opponent_cells(settings); let all_buildings = state.opponent_affordable_buildings(settings); - random_move(&all_positions, &all_buildings, rng) + random_move(&state.unoccupied_opponent_cells, &all_buildings, rng) } fn random_move(all_positions: &[Point], all_buildings: &[BuildingType], rng: &mut R) -> Command { @@ -139,13 +137,12 @@ impl CommandScore { } fn enumerate_player_commands(settings: &GameSettings, state: &GameState) -> Vec { - let all_positions = state.unoccupied_player_cells(settings); let all_buildings = state.player_affordable_buildings(settings); - let mut commands = Vec::with_capacity(all_positions.len()*all_buildings.len()+1); + let mut commands = Vec::with_capacity(state.unoccupied_player_cells.len()*all_buildings.len()+1); commands.push(Command::Nothing); - for position in all_positions { + for &position in &state.unoccupied_player_cells { for &building in &all_buildings { commands.push(Command::Build(position, building)); } diff --git a/src/strategy/sample.rs b/src/strategy/sample.rs index 2dad924..370df2f 100644 --- a/src/strategy/sample.rs +++ b/src/strategy/sample.rs @@ -9,7 +9,7 @@ pub fn choose_move(settings: &engine::settings::GameSettings, state: &engine::Ga if state.player.can_afford_defence_buildings(settings) { for y in 0..settings.size.y { if is_under_attack(state, y) { - let p_options = state.unoccupied_player_cells_in_row(settings, y); + let p_options = state.unoccupied_player_cells_in_row(y); if let Some(&p) = rng.choose(&p_options) { return Command::Build(p, BuildingType::Defence); } @@ -18,8 +18,7 @@ pub fn choose_move(settings: &engine::settings::GameSettings, state: &engine::Ga } if state.player.can_afford_all_buildings(settings) { - let options = state.unoccupied_player_cells(settings); - let option = rng.choose(&options); + let option = rng.choose(&state.unoccupied_player_cells); let buildings = [BuildingType::Attack, BuildingType::Defence, BuildingType::Energy]; let building = rng.choose(&buildings); match (option, building) { -- cgit v1.2.3