Merge branch 'display-grid' into 'master'

Display grid

See merge request mhart/DancingDroids!45
This commit is contained in:
Martin HART 2020-11-01 16:48:04 +01:00
commit 9adcfe9ce3
1 changed files with 29 additions and 1 deletions

View File

@ -198,6 +198,34 @@ fn open_file(filename: &str) -> io::Result<String> {
Ok(content) Ok(content)
} }
/// Here we display the grid by looping in every position checking if it exists in the HashMap.
fn display_grid(
w: &world::World,
robot_pool: &Vec<robot::Robot>,
h: &HashMap<robot::Position, u32>,
) {
for i in (0..w.y).rev() {
print!("{} ", i);
for j in 0..w.x {
match h.get(&robot::Position { x: j, y: i }) {
Some(id) => match robot_pool[(id - 1) as usize].o {
robot::Orientation::N => print!(""),
robot::Orientation::E => print!(""),
robot::Orientation::S => print!(""),
robot::Orientation::W => print!(""),
},
None => print!(". "),
}
}
println!();
}
print!(" ");
for j in 0..w.x {
print!("{} ", j);
}
println!();
}
fn main() -> Result<(), Box<dyn std::error::Error>> { fn main() -> Result<(), Box<dyn std::error::Error>> {
// We handle CLI flags here. // We handle CLI flags here.
let matches = App::new("DancingDroids") let matches = App::new("DancingDroids")
@ -218,7 +246,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
let world: world::World = parse_config(raw_conf, &mut robot_pool)?; let world: world::World = parse_config(raw_conf, &mut robot_pool)?;
let mut hash: HashMap<robot::Position, u32> = HashMap::new(); let mut hash: HashMap<robot::Position, u32> = HashMap::new();
create_hash_map(&robot_pool, &mut hash); create_hash_map(&robot_pool, &mut hash);
display_grid(&world, &robot_pool, &hash);
loop { loop {
let mut piouff: u32 = 0; let mut piouff: u32 = 0;
for r in &mut robot_pool { for r in &mut robot_pool {