2026-rff_mp/ivantsovma/maze/models/maze.py

36 lines
1.2 KiB
Python
Raw Normal View History

from typing import List, Optional
class Maze:
#лабиринт
def __init__(self, width: int, height: int):
self.width = width
self.height = height
self.cells = [[None for _ in range(width)] for _ in range(height)]
self.start = None
self.exit = None
def set_cell(self, x: int, y: int, cell):
#устанавливает клетки в лаб
if 0 <= x < self.width and 0 <= y < self.height:
self.cells[y][x] = cell
def get_cell(self, x: int, y: int):
if 0 <= x < self.width and 0 <= y < self.height:
return self.cells[y][x]
return None
def get_neighbors(self, cell):
neighbors = []
# вверх, вниз, влево, вправо
directions = [(0, -1), (0, 1), (-1, 0), (1, 0)]
for dx, dy in directions:
nx, ny = cell.x + dx, cell.y + dy
neighbor = self.get_cell(nx, ny)
if neighbor and neighbor.is_passable():
neighbors.append(neighbor)
return neighbors
def __repr__(self):
return f"Maze({self.width}x{self.height}, start={self.start}, exit={self.exit})"