diff --git a/src/gamestate.rs b/src/gamestate.rs index b49475e..56ba3b6 100644 --- a/src/gamestate.rs +++ b/src/gamestate.rs @@ -216,7 +216,7 @@ impl Display for GameState { self.p2.walls_left, d2.at(self.p2.x(), self.p2.y()) )?; - writeln!(f, "┏━━┬━━┬━━┬━━┬━━┬━━┬━━┬━━┬━━┓")?; + writeln!(f, "╭──┬──┬──┬──┬──┬──┬──┬──┬──╮")?; for y in 0..9 { if y > 0 { write!(f, "├")?; @@ -224,23 +224,49 @@ impl Display for GameState { let wall = if self.walls.can_walk_between(x, y - 1, x, y) { ' ' } else { - '━' + '─' }; write!(f, "{wall}{wall}")?; if x != 8 { - write!(f, "╋")?; + let wall_above = !self.walls.can_walk_between(x, y, x + 1, y); + let wall_below = + y != 0 && !self.walls.can_walk_between(x, y - 1, x + 1, y - 1); + let wall_left = y != 0 && !self.walls.can_walk_between(x, y, x, y - 1); + let wall_right = + y != 0 && !self.walls.can_walk_between(x + 1, y, x + 1, y - 1); + + match (wall_above, wall_below, wall_left, wall_right) { + (false, false, false, false) => write!(f, "·")?, + (false, true, false, false) => write!(f, "╵")?, + (true, false, false, false) => write!(f, "╷")?, + (false, false, true, false) => write!(f, "╴")?, + (false, false, false, true) => write!(f, "╶")?, + (true, true, false, false) => write!(f, "│")?, + (false, false, true, true) => write!(f, "─")?, + (false, true, true, false) => write!(f, "┐")?, + (true, false, false, true) => write!(f, "└")?, + (true, false, true, false) => write!(f, "┘")?, + (false, true, false, true) => write!(f, "┌")?, + (true, true, true, false) => write!(f, "┤")?, + (false, true, true, true) => write!(f, "┬")?, + (true, false, true, true) => write!(f, "┴")?, + (true, true, false, true) => write!(f, "├")?, + (true, true, true, true) => write!(f, "┼")?, + } + + // write!(f, "┼")?; } } - write!(f, "┤\n┃")?; + write!(f, "┤\n│")?; } else { - write!(f, "┃")?; + write!(f, "│")?; } for x in 0..9 { if x > 0 { let wall = if self.walls.can_walk_between(x - 1, y, x, y) { ' ' } else { - '┃' + '│' }; write!(f, "{wall}")?; } @@ -254,9 +280,9 @@ impl Display for GameState { }; write!(f, "{player}")?; } - writeln!(f, "┃")?; + writeln!(f, "│")?; } - writeln!(f, "┗━━┴━━┴━━┴━━┴━━┴━━┴━━┴━━┴━━┛")?; + writeln!(f, "╰──┴──┴──┴──┴──┴──┴──┴──┴──╯")?; Ok(()) } }