33 lines
1021 B
Python
33 lines
1021 B
Python
import os
|
|
from typing import List
|
|
from src.model.cell import Cell
|
|
from src.model.maze import Maze
|
|
from .observer import Observer
|
|
|
|
class ConsoleView(Observer):
|
|
def update(self, event: str):
|
|
print(f"[EVENT] {event}")
|
|
|
|
def render(self, maze: Maze, player_pos: Cell = None, path: List[Cell] = None):
|
|
os.system('cls' if os.name == 'nt' else 'clear')
|
|
|
|
path_set = set(path) if path else set()
|
|
|
|
for y in range(maze.height):
|
|
row = ""
|
|
for x in range(maze.width):
|
|
cell = maze.get_cell(x, y)
|
|
|
|
if cell.is_wall:
|
|
row += "#"
|
|
elif cell.is_start:
|
|
row += "S"
|
|
elif cell.is_exit:
|
|
row += "E"
|
|
elif player_pos and cell.x == player_pos.x and cell.y == player_pos.y:
|
|
row += "@"
|
|
elif cell in path_set:
|
|
row += "*"
|
|
else:
|
|
row += " "
|
|
print(row) |