-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgame.py
More file actions
121 lines (90 loc) · 2.68 KB
/
game.py
File metadata and controls
121 lines (90 loc) · 2.68 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
# game.py
class Info(object):
"""
A 2-dimensional array to store the map information.
"""
FIELD = 'Field'
INTERSECTION = 'Intersection'
CROSSROAD = 'Crossroad'
ROAD = 'Road'
def __init__(self, width, height):
self.width = width
self.height = height
self.data = [[None for _ in range(height)] for _ in range(width)]
def get(self, x, y):
return self.data[x][y]
def setField(self, x, y):
self.data[x][y] = (self.FIELD)
def setIntersection(self, x, y, number):
self.data[x][y] = (self.INTERSECTION, number)
def setCrossroad(self, x, y, number):
self.data[x][y] = (self.CROSSROAD, number)
def setRoad(self, x, y, number):
self.data[x][y] = (self.ROAD, number)
class Intersection(object):
"""
An intersecion in the map.
"""
def __init__(self, number, positions):
self.number = number
self.positions = positions
self.inRoads = []
self.outRoads = []
def getPostions(self):
return self.positions
def addInRoad(self, number):
self.inRoads.append(number)
def addOutRoad(self, number):
self.outRoads.append(number)
def getInRoads(self):
return self.inRoads
def getOutRoads(self):
return self.outRoads
class Crossroad(object):
"""
A crossroad in the map.
"""
def __init__(self, number, positions):
self.number = number
self.positions = positions
self.inRoads = []
self.outRoads = []
def getPostions(self):
return self.positions
def addInRoad(self, number):
self.inRoads.append(number)
def addOutRoad(self, number):
self.outRoads.append(number)
def getInRoads(self):
return self.inRoads
def getOutRoads(self):
return self.outRoads
class Road(object):
"""
A road in the map.
"""
def __init__(self, number, positions, ways, start, end):
self.number = number
self.positions = positions
self.ways = ways
self.start = start
self.end = end
self.distance = len(positions)
def getPostions(self):
return self.positions
def getStart(self):
return self.start
def getEnd(self):
return self.end
def getDistance(self):
return self.distance
def getIndexOfRoad(self, pos):
return self.positions.index(pos)
def getPosByIndex(self, index):
if index < 0 or index >= self.distance:
return None
return self.positions[index]
def getWayByIndex(self, index):
if index < 0 or index >= self.distance:
return None
return self.ways[index]