use actions::*; use math::*; use ships::*; pub fn place_ships_randomly(map_size: u16) -> Action { let mut current_placement: Vec; 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 { 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()) ) }