Python Programming: An Introduction to Computer Science, 3rd Ed.
Python Programming: An Introduction to Computer Science, 3rd Ed.
3rd Edition
ISBN: 9781590282755
Author: John Zelle
Publisher: Franklin, Beedle & Associates
bartleby

Concept explainers

Question
Book Icon
Chapter 10, Problem 4PE
Program Plan Intro

Three Button Monte

Program Plan:

  • Import the required packages.
  • Declare a gameplay function. Inside the function,
    • Create the application window using the “button.py” module.
    • Activate the doors.
    • Get the random number.
    • Assign the values to “false”.
    • Check the condition.
      • Assign “point1” to “true”.
    • Check the condition.
      • Assign the “point2” to “true”.
    • Otherwise, Assign the “point3” to “true”
    • Activate all the three doors.
    • Get the action mouse clicked.
    • Check the condition using “while” loop.
      • Check the condition for selecting the door 1 to be clicked.
      • Check the condition for selecting the door 2 to be clicked.
      • Check the condition for selecting the door 3 to be clicked.
  • Definition of “printSummary()”.
    • Print the result.
  • Definition of main function.
    • Creating the application window by setting title, cords and background.
    • Define “Quit” button and set to active.
    • Assign the text to the interface.
    • Call the method draw.
    • Initialize variables to enter loop
    • Check the condition for “Quit” not clicked.
      • Call the method “gameplay()”
    • Call the method “printSummary()”
  • Call the main function.

Expert Solution & Answer
Check Mark

Explanation of Solution

Program:

Refer the program “button.py” given in the “Chapter 10” from the text book. Add the method “update()” along with the given code.

#Define the method update

    def update(self, win, label):

        #Call the method undraw()

        self.label.undraw()

        #Assign the position to centre

        center = self.center

        #Assign the label

        self.label = Text(center, label)

        #Set active to false

        self.active = False

        #Call the method draw()

        self.label.draw(win)

Main.py:

#Import required packages

from button import Button

from graphics import GraphWin, Point, Text

from random import random

from time import sleep

#Definition of gameplay method

def gameplay(click, win, wins, losses):

    #use button.py module to create doors and activate them

    door1 = Button(win, Point(-7.5, -3), 5, 6, "Door 1")

    door2 = Button(win, Point(0, -3), 5, 6, "Door 2")

    door3 = Button(win, Point(7.5, -3), 5, 6, "Door 3")

    #Activate the doors

    door1.activate()

    door2.activate()

    door3.activate()

       #Get the random number

    x = random() * 3

    #Assign the values to false

    point1 = point2 = point3 = False

    #check the condition

    if 0 <= x <1:

        #Assign point1 to True

        point1 = True

        #Check the condition

    elif 1 <= x < 2:

        #Assign the point2 to True

        point2 = True

     #Otherwise  

    else:

        #Assign the point2 to True

        point3 = True

    #Get the action mouse click

    click = win.getMouse()

  #Check the condition using "while" loop

    while door1.clicked(click) or door2.clicked(click) or door3.clicked(click):

        #If door1 is clicked

        if door1.clicked(click):

            #Assign point1 to true

            if point1 == True:

                #Update the interface

                door1.update(win,"Victory!")

                #Call the method sleep

                sleep(1)

                #Increment the value of wins

                wins = wins + 1

            #Otherwise

            else:

                #Update the interface 

                door1.update(win,"Try Again")

                #Call the method sleep

                sleep(1)

                #Increment the losses

                losses = losses + 1

                break

            #Check the door2 is clicked

        elif door2.clicked(click):

             #Assign point2 to true

            if point2 == True:

                #Update the interface 

                door2.update(win,"Victory!")

                  #Call the method sleep

                sleep(1)

                 #Increment the value of wins

                wins = wins + 1

            #Otherwise

            else:

                 #Update the interface 

                door2.update(win,"Try Again")

                 #Call the method sleep

                sleep(1)

                #Increment the value of losses

                losses = losses + 1

                break

        else:

            if point3 == True:

                door3.update(win,"Victory!")

                 #Call the method sleep

                sleep(1)

                  #Increment the value of wins

                wins = wins + 1

            #Otherwise

            else:

                    #Update the interface 

                door3.update(win,"Try Again")

                 #Call the method sleep

                sleep(1)

                 #Increment the value of losses

                losses = losses + 1

                break

    #Return the values

    return click, wins, losses

#Definition of printSummary

def printSummary(wins, losses):

    #Print the result

    print("Wins: {0:5} Losses: {1:5}".format(wins, losses))

#Definition of main

def main():

       #Creating the application window by setting title, cords and background

    win = GraphWin("Three Button Monte", 500, 300)

    win.setCoords(-12, -12, 12, 12)

    win.setBackground("green3")

    #define Quit button and set to active

    gameover = Button(win, Point(9, 10), 3, 3, "Quit")

    gameover.activate()

    #Assign the text to the interface

    direction = Text(Point(0, 10), "Pick a Door")

    #Call the method draw

    direction.draw(win)

    #initialize variables to enter loop

    click = Point(0,0)

    wins = losses = 0

    #Check the condition

    while not gameover.clicked(click):

        #Call the method

        click, wins, losses = gameplay(click, win, wins, losses)

    #Call the method printSummary

    printSummary(wins, losses)

#Call the main function

main()

Sample Output

Output:

Screenshot of output

Python Programming: An Introduction to Computer Science, 3rd Ed., Chapter 10, Problem 4PE

Clicking the “Exit” button:

Clicking the “Door1”, “Door2”, “Door3” will displays the opened door leads to “Victory!” or “Try Again”. After clicking the “Exit” button it prints the count of the corresponding result.

Wins:     1 Losses:     2

Want to see more full solutions like this?

Subscribe now to access step-by-step solutions to millions of textbook problems written by subject matter experts!
Students have asked these similar questions
I need help making this EER diagram in Chen Notation.
In Java I have an input in a text file that I can't submit here. So, please use it as input.txt
Perceptual acuity, according to Ram Charan, explains how Ted Turner became the first CEO to recognize the potential of 24-hour news and thereby created CNN. a) True  b) False
Knowledge Booster
Background pattern image
Computer Science
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
SEE MORE QUESTIONS
Recommended textbooks for you
Text book image
Programming Logic & Design Comprehensive
Computer Science
ISBN:9781337669405
Author:FARRELL
Publisher:Cengage
Text book image
CMPTR
Computer Science
ISBN:9781337681872
Author:PINARD
Publisher:Cengage
Text book image
Programming with Microsoft Visual Basic 2017
Computer Science
ISBN:9781337102124
Author:Diane Zak
Publisher:Cengage Learning
Text book image
EBK JAVA PROGRAMMING
Computer Science
ISBN:9781337671385
Author:FARRELL
Publisher:CENGAGE LEARNING - CONSIGNMENT
Text book image
EBK JAVA PROGRAMMING
Computer Science
ISBN:9781305480537
Author:FARRELL
Publisher:CENGAGE LEARNING - CONSIGNMENT
Text book image
Microsoft Visual C#
Computer Science
ISBN:9781337102100
Author:Joyce, Farrell.
Publisher:Cengage Learning,