craps.py and die.py (See below). Play the craps game 10 times. Show the output with each win or loss together with statistics. The following is an output example: Enter the number of games: 5 (3, 5) 8 (2, 6) 8   (2, 1) 3   (5, 2) 7   (5, 5) 10 (3, 2) 5 (6, 3) 9 (6, 5) 11

Computer Networking: A Top-Down Approach (7th Edition)
7th Edition
ISBN:9780133594140
Author:James Kurose, Keith Ross
Publisher:James Kurose, Keith Ross
Chapter1: Computer Networks And The Internet
Section: Chapter Questions
Problem R1RQ: What is the difference between a host and an end system? List several different types of end...
icon
Related questions
Question

Download craps.py and die.py (See below). Play the craps game 10 times. Show the output with each win or loss together with statistics. The following is an output example:

Enter the number of games: 5

(3, 5) 8

(2, 6) 8

 

(2, 1) 3

 

(5, 2) 7

 

(5, 5) 10

(3, 2) 5

(6, 3) 9

(6, 5) 11

(6, 3) 9

(4, 6) 10

 

(1, 3) 4

(6, 5) 11

(1, 4) 5

(2, 6) 8

(6, 6) 12

(1, 2) 3

(3, 4) 7

 

The total number of wins is 3

The total number of losses is 2

The average number of rolls per win is 3.00

The average number of rolls per loss is 4.00

The winning percentage is 0.600

 

-----------------craps.py------------------------

"""

File: craps.py

 

This module studies and plays the game of craps.

"""

 

from die import Die

 

class Player(object):

 

    def __init__(self):

        """Has a pair of dice and an empty rolls list."""

        self._die1 = Die()

        self._die2 = Die()

        self._rolls = []

 

    def __str__(self):

        """Returns a string representation of the list of rolls."""

        result = ""

        for (v1, v2) in self._rolls:

            result = result + str((v1, v2)) + " " +\

                     str(v1 + v2) + "\n"

        return result

 

    def getNumberOfRolls(self):

        """Returns the number of the rolls."""

        return len(self._rolls)

 

    def play(self):

        """Plays a game, saves the rolls for that game,

        and returns True for a win and False for a loss."""

        self._rolls = []

        self._die1.roll()

        self._die2.roll()

        (v1, v2) = (self._die1.getValue(),

                    self._die2.getValue())

        self._rolls.append((v1, v2))

        initialSum = v1 + v2

        if initialSum in (2, 3, 12):

            return False

        elif initialSum in (7, 11):

            return True

        while (True):

            self._die1.roll()

            self._die2.roll()

            (v1, v2) = (self._die1.getValue(),

                        self._die2.getValue())

            self._rolls.append((v1, v2))

            sum = v1 + v2

            if sum == 7:

                return False

            elif sum == initialSum:

                return True

 

def playOneGame():

    """Plays a single game and prints the results."""

    player = Player()

    youWin = player.play()

    print(player)

    if youWin:

        print("You win!")

    else:

        print("You lose!")

 

def playManyGames():

    """Plays a number of games and prints statistics."""

    number = int(input("Enter the number of games: "))

    wins = 0

    losses = 0

    winRolls = 0

    lossRolls = 0

    player = Player()

   

    for count in range(number):

        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))

-----------------die.py------------------------

 

"""

File: die.py

 

This module defines the Die class.

"""

 

from random import randint

 

class Die(object):

    """This class represents a six-sided die."""

 

    def __init__(self):

        """The initial face of the die."""

        self._value = 1

 

    def roll(self):

        """Resets the die's value to a random number

        between 1 and 6."""

        self._value = randint(1, 6)

 

    def getValue(self):

        return self._value

 

    def __str__(self):

        return str(self._value)  

 

Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 2 steps

Blurred answer
Recommended textbooks for you
Computer Networking: A Top-Down Approach (7th Edi…
Computer Networking: A Top-Down Approach (7th Edi…
Computer Engineering
ISBN:
9780133594140
Author:
James Kurose, Keith Ross
Publisher:
PEARSON
Computer Organization and Design MIPS Edition, Fi…
Computer Organization and Design MIPS Edition, Fi…
Computer Engineering
ISBN:
9780124077263
Author:
David A. Patterson, John L. Hennessy
Publisher:
Elsevier Science
Network+ Guide to Networks (MindTap Course List)
Network+ Guide to Networks (MindTap Course List)
Computer Engineering
ISBN:
9781337569330
Author:
Jill West, Tamara Dean, Jean Andrews
Publisher:
Cengage Learning
Concepts of Database Management
Concepts of Database Management
Computer Engineering
ISBN:
9781337093422
Author:
Joy L. Starks, Philip J. Pratt, Mary Z. Last
Publisher:
Cengage Learning
Prelude to Programming
Prelude to Programming
Computer Engineering
ISBN:
9780133750423
Author:
VENIT, Stewart
Publisher:
Pearson Education
Sc Business Data Communications and Networking, T…
Sc Business Data Communications and Networking, T…
Computer Engineering
ISBN:
9781119368830
Author:
FITZGERALD
Publisher:
WILEY