feat: add the Cell class
Add the Cell class to represent a grid in the maze. Each 'Cell' can be configured to specify which walls exists for it.
This commit is contained in:
parent
340eec773d
commit
14c6f659ff
2 changed files with 55 additions and 8 deletions
40
graphics.py
40
graphics.py
|
@ -75,7 +75,7 @@ class Window:
|
||||||
while self.__is_running:
|
while self.__is_running:
|
||||||
self.redraw()
|
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.
|
draw_line draws a line on the canvas.
|
||||||
"""
|
"""
|
||||||
|
@ -86,3 +86,41 @@ class Window:
|
||||||
close sets the window to close.
|
close sets the window to close.
|
||||||
"""
|
"""
|
||||||
self.__is_running = False
|
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)
|
||||||
|
|
23
main.py
23
main.py
|
@ -1,14 +1,23 @@
|
||||||
from graphics import Window, Line, Point
|
from graphics import Window, Cell
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
window = Window(800, 800)
|
window = Window(800, 800)
|
||||||
line_1 = Line(Point(10, 50), Point(100, 70))
|
|
||||||
line_2 = Line(Point(300, 145), Point(456, 200))
|
# Draw all walls
|
||||||
line_3 = Line(Point(20, 498), Point(50, 600))
|
cell_1 = Cell(10, 30, 100, 100, window)
|
||||||
window.draw_line(line_1, "black")
|
cell_1.draw()
|
||||||
window.draw_line(line_2, "red")
|
|
||||||
window.draw_line(line_3, "black")
|
# 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()
|
window.wait_for_close()
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue