-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCell.py
More file actions
135 lines (110 loc) · 3.69 KB
/
Cell.py
File metadata and controls
135 lines (110 loc) · 3.69 KB
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
import random
class Cell:
temp = []
posX = 0
posY = 0
visited = False
nCell = None
sCell = None
eCell = None
wCell = None
def __init__(self, x, y, north, south, east, west, vis=False):
#print("Cell Constructor")
self.posX = x
self.posY = y
self.northWall = north
self.southWall = south
self.eastWall = east
self.westWall = west
self.nCell = None
self.sCell = None
self.eCell = None
self.wCell = None
self.visited=vis
@classmethod
def from_arguments(cls, args):
#print("--cell0--")
if isinstance(args, tuple):
#print("--cell1--")
x, y = args
return cls(x, y, 0, 0, 0, 0)
elif isinstance(args, list):
#print("--cell2--")
x, y, north, south, east, west = args
return cls(x, y, north, south, east, west)
elif isinstance(args, dict):
#print("--cell3--")
return cls(**args)
elif isinstance(args, Cell):
#print("--cell4--")
return args
else:
#print("--cell5--")
raise ValueError("Invalid arguments. It should be tuple, list, dict, or instance of Cell.")
def getX(self):
return self.posX
def getY(self):
return self.posY
def setNorthWall(self, n):
self.northWall = n
def setSouthWall(self, s):
self.southWall = s
def setEastWall(self, e):
self.eastWall = e
def setWestWall(self, w):
self.westWall = w
def getNorthWall(self):
return self.northWall
def getSouthWall(self):
return self.southWall
def getEastWall(self):
return self.eastWall
def getWestWall(self):
return self.westWall
def setNorthCell(self, n):
self.nCell = n
def setSouthCell(self, s):
self.sCell = s
def setEastCell(self, e):
self.eCell = e
def setWestCell(self, w):
self.wCell = w
def getNorthCell(self):
return self.nCell
def getSouththCell(self):
return self.sCell
def getEastCell(self):
return self.eCell
def getWestCell(self):
return self.wCell
def resetVisited(self):
self.visited = False
def setVisited(self):
self.visited = True
def getVisited(self):
return self.visited
def isNeighAllVisited(self):
if (self.nCell != None):
if(self.nCell.getVisited() == False): return False
if (self.sCell != None):
if(self.sCell.getVisited() == False): return False
if (self.eCell != None):
if(self.eCell.getVisited() == False): return False
if (self.wCell != None):
if(self.wCell.getVisited() == False): return False
return True
def getRandomNeigh(self):
self.temp.clear()
if ((self.nCell != None) and (self.nCell.getVisited() == False)):
self.temp.append(0)
if ((self.sCell != None) and (self.sCell.getVisited() == False)):
self.temp.append(1)
if ((self.eCell != None) and (self.eCell.getVisited() == False)):
self.temp.append(2)
#print(self.wCell)
#print(self.wCell.getVisited())
if ((self.wCell != None) and (self.wCell.getVisited() == False)):
self.temp.append(3)
#Random rn = new Random()
j = random.randrange(0,len(self.temp))
return self.temp[j]