2026-rff_mp/volkovim/task2/observer/console_view.py

64 lines
1.3 KiB
Python
Raw Normal View History

2026-05-24 18:48:59 +00:00
from observer.observer import Observer
class ConsoleView(Observer):
def update(self, event):
event_type = event.get("type")
if event_type == "maze_loaded":
print("[VIEW] Maze loaded")
elif event_type == "search_started":
print("[VIEW] Search started")
elif event_type == "search_finished":
print("[VIEW] Search completed")
elif event_type == "path_found":
print(
f"[VIEW] Path length: "
f"{event.get('length')}"
)
def render(
self,
maze,
path=None
):
route_marks = set()
if path:
for cell in path:
route_marks.add(
cell.getPosition()
)
screen = []
for row in maze.cells:
visual_row = ""
for cell in row:
position = cell.getPosition()
if (
position in route_marks
and not cell.isStart
and not cell.isExit
):
visual_row += "*"
else:
visual_row += str(cell)
screen.append(
visual_row
)
print(
"\n".join(screen)
)