summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Worthe <justin@worthe-it.co.za>2018-09-08 09:31:41 +0200
committerJustin Worthe <justin@worthe-it.co.za>2018-09-08 09:31:41 +0200
commitd3f78b98ad67920d799fa15421115d0bf4b7ee45 (patch)
tree161732c2106766fb4862d370dc3ed16e09d4d822
parent188c3c1ef073187cfb957dd5afe1aa0e7c2b6a33 (diff)
Added a static set of opening moves to get energy up and running
-rw-r--r--Cargo.toml3
-rw-r--r--src/main.rs11
-rw-r--r--src/strategy/mod.rs1
-rw-r--r--src/strategy/static_opening.rs21
4 files changed, 32 insertions, 4 deletions
diff --git a/Cargo.toml b/Cargo.toml
index 9ec8947..1602696 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -29,8 +29,9 @@ energy-cutoff = []
discard-poor-performers = []
heuristic-random = ["lazy_static"]
full-monte-carlo-tree = []
+static-opening = []
-default = ["energy-cutoff", "discard-poor-performers", "heuristic-random"]
+default = ["energy-cutoff", "discard-poor-performers", "heuristic-random", "static-opening", "debug-decisions"]
[profile.release]
debug = true \ No newline at end of file
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
+ }
+}