summaryrefslogtreecommitdiff
path: root/src/shooting.rs
diff options
context:
space:
mode:
authorJustin Worthe <justin@worthe-it.co.za>2017-07-15 19:17:49 +0200
committerJustin Worthe <justin@worthe-it.co.za>2017-07-15 19:17:49 +0200
commit6379c1252e8ec51e607865638ff7d5ae79bd9c96 (patch)
treeae9dab9d7e9fa557c60835fc933e5b34e66a718a /src/shooting.rs
parentc14a74190d72ced3e6fdbf718fce25b4a0e8cc8f (diff)
Adding shooting of new weapons
Diffstat (limited to 'src/shooting.rs')
-rw-r--r--src/shooting.rs19
1 files changed, 9 insertions, 10 deletions
diff --git a/src/shooting.rs b/src/shooting.rs
index bcdf783..e0358ee 100644
--- a/src/shooting.rs
+++ b/src/shooting.rs
@@ -7,33 +7,32 @@ use knowledge::*;
use ships::*;
pub fn shoot_smartly(knowledge: &Knowledge) -> Action {
- let shot = if knowledge.has_unknown_hits() {
+ let (weapon, target) = if knowledge.has_unknown_hits() {
destroy_shoot(&knowledge)
}
else {
seek_shoot(&knowledge)
};
-
- //TODO shoot other weapons
- Action::Shoot(Weapon::SingleShot, shot)
+
+ Action::Shoot(weapon, target)
}
-fn seek_shoot(knowledge: &Knowledge) -> Point {
- let possibilities = knowledge.get_most_possibility_shots_on_lattice();
+fn seek_shoot(knowledge: &Knowledge) -> (Weapon, Point) {
+ let (weapon, possibilities) = knowledge.get_best_seek_shots();
if possibilities.is_empty() {
println!("All possible shots on the current lattice have been tried!");
- Point::new(0,0)
+ (Weapon::SingleShot, Point::new(0,0))
}
else {
let mut rng = rand::thread_rng();
let between = Range::new(0, possibilities.len());
let i = between.ind_sample(&mut rng);
- possibilities[i as usize]
+ (weapon, possibilities[i as usize])
}
}
-fn destroy_shoot(knowledge: &Knowledge) -> Point {
+fn destroy_shoot(knowledge: &Knowledge) -> (Weapon, Point) {
let possibilities = knowledge.get_best_adjacent_shots();
if possibilities.is_empty() {
seek_shoot(&knowledge)
@@ -43,6 +42,6 @@ fn destroy_shoot(knowledge: &Knowledge) -> Point {
let between = Range::new(0, possibilities.len());
let i = between.ind_sample(&mut rng);
- possibilities[i as usize]
+ (Weapon::SingleShot, possibilities[i as usize])
}
}