2026-rff_mp/stepushovgs/labyrinth/source/bububu/observer.py

59 lines
1.5 KiB
Python

from abc import ABC, abstractmethod
import os
class Event:
def __init__(self, event, maze, player_position, path):
self.event = event
self.maze = maze
self.player_position = player_position
self.path = path
class Observer(ABC):
@abstractmethod
def update(self, event: Event):
pass
class ConsoleView(Observer):
def update(self, event: Event):
if event.event == "path_found":
print("Путь найден:")
self.render(
event.maze,
event.player_position,
event.path
)
elif event.event == "move":
self.render(
event.maze,
event.player_position,
event.path
)
elif event.event == "maze_loaded":
print("Загружен лабиринт:")
self.render(
event.maze,
event.player_position,
event.path
)
else:
pass
def render(self, maze, player_position, path):
os.system('cls' if os.name == 'nt' else 'clear')
for line in maze.cells:
for c in line:
if c.getXY() == player_position:
print('P', end='')
elif c.getXY() in path:
print('*', end='')
else:
print(c.toStr(), end='')
print()