maze-solver/maze.py

68 lines
1.9 KiB
Python
Raw Normal View History

from typing import List
from time import sleep
from graphics import Window
from cell import Cell
class Maze:
"""
Maze represents a two-dimensional grid of Cells.
"""
def __init__(
self,
x_position: int,
y_position: int,
num_rows: int,
num_columns: int,
cell_size_x: int,
cell_size_y: int,
window: Window = None,
) -> None:
self._x_position = x_position
self._y_position = y_position
self._num_rows = num_rows
self._num_columns = num_columns
self._cell_size_x = cell_size_x
self._cell_size_y = cell_size_y
self._window = window
# Create the Maze's cells
self._cells: List[List[Cell]] = [None for i in range(self._num_rows)]
self._create_cells()
def _create_cells(self):
cursor_x = self._x_position
cursor_y = self._y_position
for i in range(self._num_rows):
column: List[Cell] = [None for j in range(self._num_columns)]
for j in range(self._num_columns):
cell = Cell(
cursor_x,
cursor_y,
(cursor_x + self._cell_size_x),
(cursor_y + self._cell_size_y),
self._window
)
column[j] = cell
if j == self._num_columns - 1:
cursor_x = self._x_position
else:
cursor_x += self._cell_size_x
self._cells[i] = column
cursor_y += self._cell_size_y
if self._window:
self._draw_cells()
def _draw_cells(self):
for i in range(self._num_rows):
for j in range(self._num_columns):
self._cells[i][j].draw()
self._animate()
def _animate(self):
self._window.redraw()
sleep(0.05)