Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ class Settings:
cell_size = 50
wall_size = cell_size // 10

footer_height = 120
footer_height = 160
text_x_offset = 30
text_y_offset = 30
text_line_inset = 25
Expand Down
24 changes: 22 additions & 2 deletions src/ui.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ def __init__(self, adapter: Adapter) -> None:
self.adapter = adapter
rows, columns = len(self.adapter.grid), len(self.adapter.grid[0])

self.show_path: bool = True

self.m = Mlx()
self.mlx_ptr: int = self.m.mlx_init()
self.maze_width = columns * stg.cell_size
Expand All @@ -48,9 +50,11 @@ def __init__(self, adapter: Adapter) -> None:

def keybinding_dispatch(self, keycode: int, _: dict[str, Any]) -> None:
if keycode == 0xFF1B: # escape
self.m.mlx_destroy_image(self.mlx_ptr, self.img_addr)
self.m.mlx_destroy_window(self.mlx_ptr, self.win_ptr)
os._exit(0)
if keycode == 0x6D:

if keycode == 0x6D: # m
self.adapter.generate()
self.clear()
self.render_maze()
Expand All @@ -60,6 +64,13 @@ def keybinding_dispatch(self, keycode: int, _: dict[str, Any]) -> None:
self.mlx_ptr, self.win_ptr, self.img_addr, 0, 0
)

if keycode == 0x70: # p
self.show_path = not self.show_path
self.render_path()
self.m.mlx_put_image_to_window(
self.mlx_ptr, self.win_ptr, self.img_addr, 0, 0
)

def clear(self) -> None:
self._put_box(
0,
Expand Down Expand Up @@ -98,6 +109,7 @@ def render_terminals(self) -> None:
)

def render_path(self) -> None:
color = stg.path_color if self.show_path else stg.off_color
path = self.adapter.shortest_path[1:-1]

for cell in path:
Expand All @@ -109,7 +121,7 @@ def render_path(self) -> None:
x=y + stg.wall_size,
width=int(stg.cell_size - 2 * stg.wall_size),
height=int(stg.cell_size - 2 * stg.wall_size),
color=stg.path_color,
color=color,
)

def render_text(self) -> None:
Expand All @@ -135,6 +147,14 @@ def render_text(self) -> None:
stg.text_x_offset,
self.maze_height + stg.text_y_offset + 2 * stg.text_line_inset,
stg.text_color,
"p | Show/Hide shortest path",
)
self.m.mlx_string_put(
self.mlx_ptr,
self.win_ptr,
stg.text_x_offset,
self.maze_height + stg.text_y_offset + 3 * stg.text_line_inset,
stg.text_color,
"ESC | Quit",
)

Expand Down
Loading