diff options
Diffstat (limited to 'src/placement.rs')
-rw-r--r-- | src/placement.rs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/placement.rs b/src/placement.rs new file mode 100644 index 0000000..faa340e --- /dev/null +++ b/src/placement.rs @@ -0,0 +1,24 @@ +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()) + ) +} |