summaryrefslogtreecommitdiff
path: root/src/strategy
diff options
context:
space:
mode:
authorJustin Worthe <justin@worthe-it.co.za>2018-05-12 15:14:35 +0200
committerJustin Worthe <justin@worthe-it.co.za>2018-05-12 15:14:35 +0200
commitd6bec472109806eea2ad86741edd3eb1571b872c (patch)
treea77ba566d806872e6ece1e6affa00550ffb6fbb9 /src/strategy
parent2d6ee1dddda6a51692adff10160bb93a76430b0b (diff)
Brought random crate back
Diffstat (limited to 'src/strategy')
-rw-r--r--src/strategy/sample.rs9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/strategy/sample.rs b/src/strategy/sample.rs
index 3a311e0..2dad924 100644
--- a/src/strategy/sample.rs
+++ b/src/strategy/sample.rs
@@ -1,13 +1,16 @@
use engine;
use engine::command::*;
+use rand::{thread_rng, Rng};
pub fn choose_move(settings: &engine::settings::GameSettings, state: &engine::GameState) -> Command {
+ let mut rng = thread_rng();
+
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);
- if let Some(&p) = p_options.first() {
+ if let Some(&p) = rng.choose(&p_options) {
return Command::Build(p, BuildingType::Defence);
}
}
@@ -16,9 +19,9 @@ 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 = options.first();
+ let option = rng.choose(&options);
let buildings = [BuildingType::Attack, BuildingType::Defence, BuildingType::Energy];
- let building = buildings.first();
+ let building = rng.choose(&buildings);
match (option, building) {
(Some(&p), Some(&building)) => Command::Build(p, building),
_ => Command::Nothing