diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/main.rs | 11 | ||||
-rw-r--r-- | src/strategy/mod.rs | 1 | ||||
-rw-r--r-- | src/strategy/static_opening.rs | 21 |
3 files changed, 30 insertions, 3 deletions
diff --git a/src/main.rs b/src/main.rs index 05b9546..4fa0366 100644 --- a/src/main.rs +++ b/src/main.rs @@ -34,9 +34,13 @@ fn main() { } }; - // TODO: Opening playbook? - #[cfg(feature = "full-monte-carlo-tree")] let command = strategy::monte_carlo_tree::choose_move(&state, start_time, max_time); - #[cfg(not(feature = "full-monte-carlo-tree"))] let command = strategy::monte_carlo::choose_move(&state, start_time, max_time); + let command = if cfg!(feature = "static-opening") && state.round < strategy::static_opening::STATIC_OPENING_LENGTH { + strategy::static_opening::choose_move(&state) + } else if cfg!(feature = "full-monte-carlo-tree") { + strategy::monte_carlo_tree::choose_move(&state, start_time, max_time) + } else { + strategy::monte_carlo::choose_move(&state, start_time, max_time) + }; match write_command(COMMAND_PATH, command) { Ok(()) => {} @@ -48,3 +52,4 @@ fn main() { println!("Elapsed time: {}", start_time.to(PreciseTime::now())); } + diff --git a/src/strategy/mod.rs b/src/strategy/mod.rs index ceb624b..9ec41bb 100644 --- a/src/strategy/mod.rs +++ b/src/strategy/mod.rs @@ -1,2 +1,3 @@ pub mod monte_carlo; pub mod monte_carlo_tree; +pub mod static_opening; diff --git a/src/strategy/static_opening.rs b/src/strategy/static_opening.rs new file mode 100644 index 0000000..f7e101c --- /dev/null +++ b/src/strategy/static_opening.rs @@ -0,0 +1,21 @@ +use engine::geometry::*; +use engine::command::*; +use engine::bitwise_engine::*; + +pub const STATIC_OPENING_LENGTH: u16 = 12; + +pub fn choose_move(state: &BitwiseGameState) -> Command { + match state.round { + 0 => Command::Build(Point::new(0,0), BuildingType::Energy), + 3 => Command::Build(Point::new(0,1), BuildingType::Energy), + 5 => Command::Build(Point::new(0,2), BuildingType::Energy), + 7 => Command::Build(Point::new(0,3), BuildingType::Energy), + 9 => Command::Build(Point::new(0,4), BuildingType::Energy), + 10 => Command::Build(Point::new(0,5), BuildingType::Energy), + 11 => Command::Build(Point::new(0,6), BuildingType::Energy), + 12 => Command::Build(Point::new(0,7), BuildingType::Energy), + 13 => Command::Build(Point::new(1,0), BuildingType::Energy), + 14 => Command::Build(Point::new(1,7), BuildingType::Energy), + _ => Command::Nothing + } +} |