diff options
author | Justin Wernick <justin@worthe-it.co.za> | 2022-04-19 21:25:36 +0200 |
---|---|---|
committer | Justin Wernick <justin@worthe-it.co.za> | 2022-04-19 21:25:36 +0200 |
commit | a866bde485c7d8bc82820f2def70af7b6c70a066 (patch) | |
tree | 6f2ac5888e2773faefae1aaee9bbe73aa439b96d /2017-battleships/src/placement.rs | |
parent | 237c67f87eaab0bab51d83d3dbf7a9632db75b50 (diff) |
Refile for merging repos
Diffstat (limited to '2017-battleships/src/placement.rs')
-rw-r--r-- | 2017-battleships/src/placement.rs | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/2017-battleships/src/placement.rs b/2017-battleships/src/placement.rs new file mode 100644 index 0000000..4740d76 --- /dev/null +++ b/2017-battleships/src/placement.rs @@ -0,0 +1,23 @@ +use actions::*; +use math::*; +use ships::*; + +pub fn place_ships_randomly(map_size: u16) -> Action { + let mut current_placement: Vec<ShipPlacement>; + + while { + current_placement = create_random_placement(map_size); + !ShipPlacement::valid_placements(¤t_placement, map_size) + } {} + Action::PlaceShips(current_placement) +} + +fn create_random_placement(map_size: u16) -> Vec<ShipPlacement> { + vec!( + ShipPlacement::new(Ship::Battleship, Point::random(map_size), Direction::random()), + ShipPlacement::new(Ship::Carrier, Point::random(map_size), Direction::random()), + ShipPlacement::new(Ship::Cruiser, Point::random(map_size), Direction::random()), + ShipPlacement::new(Ship::Destroyer, Point::random(map_size), Direction::random()), + ShipPlacement::new(Ship::Submarine, Point::random(map_size), Direction::random()) + ) +} |