1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
from graphics import Point, Line
class Cell:
def __init__(self, window=None, lwall=True, twall=True, rwall=True, bwall=True):
self._x1 = None
self._y1 = None
self._x2 = None
self._y2 = None
self._win = window
self.lwall = lwall
self.twall = twall
self.rwall = rwall
self.bwall = bwall
def draw(self, x1, y1, x2, y2):
if self._win is None:
return
self._x1 = x1
self._y1 = y1
self._x2 = x2
self._y2 = y2
self._win.draw_line(Line(Point(x1, y1), Point(x1, y2))) if self.lwall else self._win.draw_line(Line(Point(x1, y1), Point(x1, y2)), "white")
self._win.draw_line(Line(Point(x1, y1), Point(x2, y1))) if self.twall else self._win.draw_line(Line(Point(x1, y1), Point(x2, y1)), "white")
self._win.draw_line(Line(Point(x2, y1), Point(x2, y2))) if self.rwall else self._win.draw_line(Line(Point(x2, y1), Point(x2, y2)), "white")
self._win.draw_line(Line(Point(x1, y2), Point(x2, y2))) if self.bwall else self._win.draw_line(Line(Point(x1, y2), Point(x2, y2)), "white")
def draw_move(self, to_cell, undo=False):
center_start = Point((self._x1+self._x2)>>1, (self._y1+self._y2)>>1)
center_end = Point((to_cell._x1+to_cell._x2)>>1, (to_cell._y1+to_cell._y2)>>1)
fill_color = "red"
if undo:
fill_color = "gray"
self._win.draw_line(Line(center_start, center_end), fill_color)
|