From 286763000e4e5919c07f2840c64ecc7932530175 Mon Sep 17 00:00:00 2001 From: Justin Worthe Date: Mon, 25 Jun 2018 20:26:05 +0200 Subject: Updated test cases and made engine work correctly according to tests I don't think a tesla appeared in this match. I need to contrive a bot to build one. --- src/strategy/monte_carlo.rs | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) (limited to 'src/strategy') diff --git a/src/strategy/monte_carlo.rs b/src/strategy/monte_carlo.rs index 1ea18db..18b8acc 100644 --- a/src/strategy/monte_carlo.rs +++ b/src/strategy/monte_carlo.rs @@ -76,18 +76,18 @@ fn simulate_to_endstate(command_score: &mut CommandScore, settings: &Gam fn random_player_move(settings: &GameSettings, state: &GameState, rng: &mut R) -> Command { let all_buildings = state.player.sensible_buildings(settings); - random_move(&settings, &state.unoccupied_player_cells, &all_buildings, rng) + random_move(&state.unoccupied_player_cells, &state.occupied_player_cells(), &all_buildings, rng) } fn random_opponent_move(settings: &GameSettings, state: &GameState, rng: &mut R) -> Command { let all_buildings = state.opponent.sensible_buildings(settings); - random_move(&settings, &state.unoccupied_opponent_cells, &all_buildings, rng) + random_move(&state.unoccupied_opponent_cells, &state.occupied_opponent_cells(), &all_buildings, rng) } -fn random_move(settings: &GameSettings, all_positions: &[Point], all_buildings: &[BuildingType], rng: &mut R) -> Command { +fn random_move(free_positions: &[Point], occupied_positions: &[Point], all_buildings: &[BuildingType], rng: &mut R) -> Command { - let building_command_count = all_positions.len()*all_buildings.len(); - let deconstruct_count = (settings.size.x as usize * settings.size.y as usize / 2) - all_positions.len(); + let building_command_count = free_positions.len()*all_buildings.len(); + let deconstruct_count = occupied_positions.len(); let nothing_count = 1; let number_of_commands = building_command_count + deconstruct_count + nothing_count; @@ -98,12 +98,12 @@ fn random_move(settings: &GameSettings, all_positions: &[Point], all_bui Command::Nothing } else if choice_index < building_command_count { Command::Build( - all_positions[choice_index/all_buildings.len()], + free_positions[choice_index/all_buildings.len()], all_buildings[choice_index%all_buildings.len()] ) } else { Command::Deconstruct( - all_positions[choice_index-building_command_count] + occupied_positions[choice_index-building_command_count] ) } } @@ -176,11 +176,8 @@ impl CommandScore { } } - for building in &state.player_buildings { - commands.push(CommandScore::new(Command::Deconstruct(building.pos))); - } - for building in &state.player_unconstructed_buildings { - commands.push(CommandScore::new(Command::Deconstruct(building.pos))); + for &position in &state.occupied_player_cells() { + commands.push(CommandScore::new(Command::Deconstruct(position))); } commands -- cgit v1.2.3