-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmazedata.py
64 lines (51 loc) · 2.25 KB
/
mazedata.py
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
from constants import *
class MazeBase(object):
def __init__(self):
self.portalPairs = {}
self.homeoffset = (0, 0)
self.ghostNodeDeny = {UP:(), DOWN:(), LEFT:(), RIGHT:()}
def setPortalPairs(self, nodes):
for pair in list(self.portalPairs.values()):
nodes.setPortalPair(*pair)
def connectHomeNodes(self, nodes):
key = nodes.createHomeNodes(*self.homeoffset)
nodes.connectHomeNodes(key, self.homenodeconnectLeft, LEFT)
nodes.connectHomeNodes(key, self.homenodeconnectRight, RIGHT)
def addOffset(self, x, y):
return x+self.homeoffset[0], y+self.homeoffset[1]
def denyGhostsAccess(self, ghosts, nodes):
nodes.denyAccessList(*(self.addOffset(2, 3) + (LEFT, ghosts)))
nodes.denyAccessList(*(self.addOffset(2, 3) + (RIGHT, ghosts)))
for direction in list(self.ghostNodeDeny.keys()):
for values in self.ghostNodeDeny[direction]:
nodes.denyAccessList(*(values + (direction, ghosts)))
class Maze1(MazeBase):
def __init__(self):
MazeBase.__init__(self)
self.name = "maze1"
self.portalPairs = {0:((0, 17), (27, 17))}
self.homeoffset = (11.5, 14)
self.homenodeconnectLeft = (12, 14)
self.homenodeconnectRight = (15, 14)
self.pacmanStart = (15, 26)
self.fruitStart = (9, 20)
self.ghostNodeDeny = {UP:((12, 14), (15, 14), (12, 26), (15, 26)), LEFT:(self.addOffset(2, 3),),
RIGHT:(self.addOffset(2, 3),)}
class Maze2(MazeBase):
def __init__(self):
MazeBase.__init__(self)
self.name = "maze2"
self.portalPairs = {0:((0, 4), (27, 4)), 1:((0, 26), (27, 26))}
self.homeoffset = (11.5, 14)
self.homenodeconnectLeft = (9, 14)
self.homenodeconnectRight = (18, 14)
self.pacmanStart = (16, 26)
self.fruitStart = (11, 20)
self.ghostNodeDeny = {UP:((9, 14), (18, 14), (11, 23), (16, 23)), LEFT:(self.addOffset(2, 3),),
RIGHT:(self.addOffset(2, 3),)}
class MazeData(object):
def __init__(self):
self.obj = None
self.mazedict = {0:Maze1, 1:Maze2}
def loadMaze(self, level):
self.obj = self.mazedict[level%len(self.mazedict)]()