-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRoute.py
129 lines (109 loc) · 4.02 KB
/
Route.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
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
# Skout - Flagfootball Scouting Analysis Tool
# Copyright (C) 2021 Xaver Klemenschits
# See LICENSE.txt for details
import sys
class Route:
routeNames = ["Stop", # 0
"Quick Out", # 1
"Slant", # 2
"Comeback Out", # 3
"Comeback In", # 4
"10 Out", # 5
"10 In", # 6
"Corner", # 7
"Post", # 8
"Go", # 9
"5 In", # 10
"5 Out", # 11
"Pivot", # 12
"Post-Corner", # 13
"Reverse", # 14
"Quick In", # 15
"Yoyo", # 16
"Stop&Go", # 17
"Out&Up", # 18
"Post Comeback", # 19
"Screen", # 20
]
# coordinates for the lines describing the routes
routeCoords = [[[0, 6], [-1, 5]],
[[4, 1]],
[[-4, 3]],
[[0, 12], [1, 10]],
[[0, 12], [-1, 10]],
[[0, 10], [2, 10]],
[[0, 10], [-2, 10]],
[[0, 8], [3, 12]],
[[0, 8], [-3, 12]],
[[0, 12]],
[[0, 5], [-2, 5]],
[[0, 5], [2, 5]],
[[-3, 3], [3, 3]],
[[0, 7], [-2, 9], [1, 12]],
[[-1, -1], [-5, -1]],
[[-4, 1]],
[[3, 3], [-3, 3]],
[[0, 6], [-1, 5], [0, 12]],
[[0, 5], [5, 5], [5, 12]],
[[0, 8], [-3, 12], [-5, 11]],
[[0, -1]]
]
def __init__(self, r=0):
self.setRoute(r)
def setRoute(self, r):
if(type(r) == str):
foundRoute = False
for i in range(0, len(self.routeNames)):
if(self.routeNames[i] == r):
self.route = i
foundRoute = True
if(not foundRoute):
print("Error: Could not find route: {}".format(r))
sys.exit()
else:
if(r < 0 or r >= len(self.routeNames)):
print(
"Error: Route {} is not defined! Allowed routes are 0 - {}".format(r, len(self.routeNames)-1))
sys.exit()
else:
self.route = r
def getRoute(self):
return self.routeNames[self.route]
def getRoutePath(self):
return self.routeCoords[self.route]
def __str__(self):
return self.routeNames[self.route]
class RouteList:
numberOfRoutes = 4
def __init__(self, routes=[]):
if(len(routes) != self.numberOfRoutes):
print("Warning: RouteList must have exactly {} routes!".format(
self.numberOfRoutes))
if(type(routes[0]) != Route):
self.routes = []
for i in range(self.numberOfRoutes):
self.routes.append(Route(routes[i]))
else:
self.routes = routes
def __lt__(self, other):
for i in range(self.numberOfRoutes):
if(self.routes[i].route < other[i].route):
return True
elif(self.routes[i].route > other[i].route):
return False
return False
def __eq__(self, other):
for i in range(self.numberOfRoutes):
if(self.routes[i].route != other[i].route):
return False
return True
def __str__(self):
outputStr = "["
for i in range(len(self.routes)-1):
outputStr = outputStr + str(self.routes[i]) + ", "
outputStr = outputStr + str(self.routes[self.numberOfRoutes-1]) + "]"
return outputStr
def __getitem__(self, i):
return self.routes[i]
def __setitem__(self, i, val):
self.routes[i] = val