/
craps.py
97 lines (79 loc) · 2.46 KB
/
craps.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
from die import Die
class Player(object):
def __init__(self):
self.die1 = Die()
self.die2 = Die()
self.roll = ""
self.rollsCount = 0
self.atStartup = True
self.winner = self.loser = False
def __str__(self):
return self.roll
def getNumberOfRolls(self):
return self.rollsCount
def rollDice(self):
self.rollsCount += 1
self.die1.roll()
self.die2.roll()
(v1, v2) = (self.die1.getValue(),
self.die2.getValue())
self.roll = str((v1, v2)) + " total = " + str(v1 + v2)
if self.atStartup:
self.initialSum = v1 + v2
self.atStartup = False
if self.initialSum in (2, 3, 12):
self.loser = True
elif self.initialSum in (7, 11):
self.winner = True
else:
laterSum = v1 + v2
if laterSum == 7:
self.loser = True
elif laterSum == self.initialSum:
self.winner = True
return (v1, v2)
def isWinner(self):
return self.winner
def isLoser(self):
return self.loser
def play(self):
while not self.isWinner() and not self.isLoser():
self.rollDice()
return self.isWinner()
def playOneGame():
player = Player()
while not player.isWinner() and not player.isLoser():
player.rollDice()
print(player)
if player.isWinner():
print("You win!")
else:
print("You lose!")
def playManyGames(number):
wins = 0
losses = 0
winRolls = 0
lossRolls = 0
for count in range(number):
player = Player()
hasWon = player.play()
rolls = player.getNumberOfRolls()
if hasWon:
wins += 1
winRolls += rolls
else:
losses += 1
lossRolls += rolls
print("The total number of wins is", wins)
print("The total number of losses is", losses)
print("The average number of rolls per win is %0.2f" % \
(winRolls / wins))
print("The average number of rolls per loss is %0.2f" % \
(lossRolls / losses))
print("The winning percentage is %0.3f" % (wins / number))
def main():
playOneGame()
number = int(input("Enter the number of games: "))
playManyGames(number)
if __name__ == "__main__":
main()