from src.model.cell import Cell from src.model.maze import Maze class TextFileMazeBuilder: def build_from_file(self, filename): with open(filename, "r", encoding="utf-8") as f: lines = [line.rstrip("\n") for line in f] height = len(lines) width = max(len(line) for line in lines) cells = [] start = None exit_ = None for y, line in enumerate(lines): row = [] for x, ch in enumerate(line.ljust(width)): is_wall = (ch == "#") is_start = (ch == "S") is_exit = (ch == "E") cell = Cell(x, y, is_wall, is_start, is_exit) row.append(cell) if is_start: start = cell if is_exit: exit_ = cell cells.append(row) if start is None: raise ValueError("Файл должен содержать S (старт)") # exit_ может быть None — это валидно (no_exit.txt) return Maze(width, height, cells, start, exit_)