diff --git a/graphics.py b/graphics.py index f71d5ed..16bdc03 100644 --- a/graphics.py +++ b/graphics.py @@ -75,7 +75,7 @@ class Window: while self.__is_running: self.redraw() - def draw_line(self, line: Line, fill_colour: str): + def draw_line(self, line: Line, fill_colour: str = "black"): """ draw_line draws a line on the canvas. """ @@ -86,3 +86,41 @@ class Window: close sets the window to close. """ self.__is_running = False + + +class Cell: + """ + A Cell represents a grid on the maze. + """ + + def __init__( + self, + x1: int, y1: int, + x2: int, y2: int, + window: Window + ): + self.__top_wall_exists = True + self.__bottom_wall_exists = True + self.__left_wall_exists = True + self.__right_wall_exists = True + self.__top_wall = Line(Point(x1, y1), Point(x2, y1)) + self.__bottom_wall = Line(Point(x1, y2), Point(x2, y2)) + self.__left_wall = Line(Point(x1, y1), Point(x1, y2)) + self.__right_wall = Line(Point(x2, y1), Point(x2, y2)) + self.__window = window + + def set_walls(self, top: bool, bottom: bool, left: bool, right: bool): + self.__top_wall_exists = top + self.__bottom_wall_exists = bottom + self.__left_wall_exists = left + self.__right_wall_exists = right + + def draw(self): + if self.__top_wall_exists: + self.__window.draw_line(self.__top_wall) + if self.__bottom_wall_exists: + self.__window.draw_line(self.__bottom_wall) + if self.__left_wall_exists: + self.__window.draw_line(self.__left_wall) + if self.__right_wall_exists: + self.__window.draw_line(self.__right_wall) diff --git a/main.py b/main.py index d1fd73e..d5db9cb 100644 --- a/main.py +++ b/main.py @@ -1,14 +1,23 @@ -from graphics import Window, Line, Point +from graphics import Window, Cell def main(): window = Window(800, 800) - line_1 = Line(Point(10, 50), Point(100, 70)) - line_2 = Line(Point(300, 145), Point(456, 200)) - line_3 = Line(Point(20, 498), Point(50, 600)) - window.draw_line(line_1, "black") - window.draw_line(line_2, "red") - window.draw_line(line_3, "black") + + # Draw all walls + cell_1 = Cell(10, 30, 100, 100, window) + cell_1.draw() + + # Draw vertical walls only + cell_2 = Cell(300, 50, 400, 100, window) + cell_2.set_walls(False, False, True, True) + cell_2.draw() + + # Draw horizontal walls only + cell_3 = Cell(200, 400, 500, 600, window) + cell_3.set_walls(True, True, False, False) + cell_3.draw() + window.wait_for_close()