-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathbases.py
More file actions
61 lines (55 loc) · 1.93 KB
/
bases.py
File metadata and controls
61 lines (55 loc) · 1.93 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
class Bases():
""" This class will attempt to model the bases, and how events
affect the bases.
A couple of assumptions are made:
1. A single moves every runner up one base.
2. A double moves every runner up two bases.
TODO:: Model Stolen bases, double plays etc.
"""
def __init__(self):
""" Initializes our bases to empty, also initializes the
'innings' runs to empty
"""
self.bases = [False,False,False]
self.runs = 0
def get_base(self, base):
""" Returns the current player on the base, returns False
if the base is empty
"""
return self.bases[base-1]
def process_event(self, player, event):
if event == "walk":
self.bases.insert(0,player)
i=0
removed_base = False
for base in self.bases:
if base == False and removed_base == False:
self.bases.pop(i)
removed_base = True
i+=1
if removed_base == False:
self.bases.pop()
self.runs += 1
if event == "single":
self.bases.insert(0,player)
if self.bases.pop() != False:
self.runs += 1
if event == "double":
self.bases.insert(0,player)
self.bases.insert(0,False)
if self.bases.pop() != False:
self.runs +=1
if self.bases.pop() != False:
self.runs +=1
if event == "triple":
for base in self.bases:
if base != False:
self.runs +=1
self.bases = [False,False,player]
if event == "HR":
for base in self.bases:
if base != False:
self.runs +=1
self.runs += 1
self.bases = [False,False,False]
#print self.bases, self.runs