diff --git a/src/map.rs b/src/map.rs index 0a19ffe..8c1fe32 100644 --- a/src/map.rs +++ b/src/map.rs @@ -2,6 +2,7 @@ use crate::Position; use bevy::prelude::{Commands, Component}; +use rand::Rng; #[derive(Debug, Clone, Copy, PartialEq, Eq, Component)] /// Une case sur la carte du jeu. @@ -75,28 +76,22 @@ pub enum Tile { } /// Permet de crée des entité representant les cases d'une map, sur une longueur et langueur donné. -/// Donner une longueur impaire. pub fn init_map(longueur: u8, largeur: u8, mut commands: Commands) { - (0..longueur) - .flat_map(|y| { - (0..largeur) - .filter(move |&x| !(y % 2 == 0 && x == largeur - 1)) - .map(move |x| (x, y)) - }) - .for_each(|(x, y)| { - commands.spawn((generate_random_tile_for_map(), Position { x, y })); - }); + for x in 0..longueur { + for y in 0..largeur { + if !(x % 2 == 0 && y == longueur - 1) { + commands.spawn((generate_random_tile_for_map(), Position { x, y })); + } + } + } } /// Cette fonction return un ellement aleatoir entre de la Grass Hill et Forest fn generate_random_tile_for_map() -> Tile { - if rand::random() { - if rand::random() { - Tile::Forest - } else { - Tile::Hill - } - } else { - Tile::Grass + let mut rng = rand::thread_rng(); + match rng.gen_range(1..=4) { + 1 => Tile::Forest, + 2 => Tile::Hill, + _ => Tile::Grass, } }