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
Question
Book Icon
Chapter 10, Problem 13PE
Program Plan Intro

Face

Program Plan:

face.py

  • Import the required packages.
  • Definition of main “init” method.
    • Assign the size value, eye size, eye off, mouth size, mouth off, window value to the corresponding variables.
  • Definition of “getCenter” method.
    • Return the center value.
  • Definition of “move” method.
    • Call the method “undrawn()”.
    • Call the method getCenter().
    • Get the position of “x” and “y”.
    • Get the center position.
    • Check the condition for the face to smile.
      • Call the method “smile()”.
        • Check the condition for the face to wink.
          • Call the method “wink()”.
        • Check the condition for the face to Grim Face.
          • Call the method “GrimFace()”.
          • Call the method “mediate()”.
  • Definition “initializeGrimFace” method.
    • Create a circle.
    • Call the function to open the left eye and right eye.
    • Create an array for teeth.
    • Call the method to draw the mouth.
    • Call the method to draw the face.
  • Definition of method “lineMouth()”.
    • Call the method “clone()”.
    • Condition to set the mouth.
    • Call the method “clone()”.
    • Call the method “Line()”.
    • Return the line.
  • Definition of method “rectMouth()”
    • Get the position to place the mouth.
    • Return the position.
  • Definition of method “undrawn()”.
    • Remove the head, left eye, right eye, teeth and mouth.
  • Definition of method “drawFace()”.
    • Draw the circle to place the outline of the face.
    • Set the head to the window.
    • Set the left eye to the window.
    • Set the left eye to the window.
    • Set the mouth to the window.
  • Definition of “leftEyeOpen()”.
    • Set the left eye to the circle.
    • Condition to open and close the left eyes.
  • Definition of “rightEyeOpen()”.
    • Set the right eye to the circle.
    • Condition to open and close the right eyes.
  • Definition of “leftEyeWink()” method.
    • Place the position of the left eye.
    • Get the values of “x” and “y”.
    • Condition to get the “leftWink”.
    • Set the value to “leftWink”.
  • Definition of “rightEyeWink()” method.
    • Place the position of the right eye.
    • Get the values of “x” and “y”.
    • Condition to get the “rightWink”.
    • Set the value to “rightWink”.
  • Definition of “wink()”.
    • Call the method “unDraw()”.
    • Call the method “lineMouth()”, leftEyeOpen(), “rightEyeWink()”, “drawFace()”.
  • Definition of “smile()” method.
    • Call the method “unDraw()”.
    • Call the method “rectMouth()”.
    • Get the “xint” value.
    • Condition to append the mouth.
    • Traverse the loop till “i” reaches “8”.
      • Call the method “Line()” to get the two points.
      • Condition to append the teeth.
      • Check the condition to place the teeth.
      • Draw the tooth for the face.
      • Call the method “rectMouth()”., “leftEyeOpen()”, “rightEyeOpen()”, “drawFace()”.
        • Definition of “mediate()” method.
          • Call the respective method to un draw the face, draw mouth, right and left eye and face

Main.py:

  • Import the required packages.
  • Definition of method “makeButtons()”.
    • Create a button “wink()”.
    • Create a button “mediate()”.
    • Create a button “Smile()”.
    • Crate a button “Quit”.
    • Activate all the buttons.
    • Return the values.
  • Definition of method “main()”.
    • Creating the interface.
    • Call the method “getMouse()”.
    • Check whether the “endGame” is clicked or not.
      • Check whether the “wink” is clicked.
        • Call the method “wink”.
        • Call the method “getMouse()”.
      • Check whether the “smile” is clicked.
        • Call the method “smile()”.
        • Call the method “getMouse()”.
      • Check whether the “mediate” is clicked.
        • Call the method “mediate()”.
        • Call the method “getMouse()”.
          • Close the window.
          • Call the method “main()”.

Expert Solution & Answer
Check Mark

Explanation of Solution

Program:

face.py

#Import required packages

from graphics import *

#Definition of class Face

class Face:

    #Definition of init method

    def __init__(self, window, center, size):

        #Assign the size value

        self.size = size

        #Calculate the eye size

        self.eyeSize = 0.15 * size

        #Condition to close the eye

        self.eyeOff = size / 3.0

        #Condition of mouth size

        self.mouthSize = 0.8 * size

        #Condition to close the mouth

        self.mouthOff = size / 2.0

        #Set the interface to centre

        self.center = center

        #Assign the window value

        self.window = window

        #Call the method initializeGrimFace

        self.initializeGrimFace()

        #Assign the rightEye

        self.rightEye

    #Definition of getCenter method

    def getCenter(self):

        #Return the centre value

        return self.center

    #Definition of method move

    def move(self, dx, dy):

        #Call the method undraw

        self.unDraw()

        #Call the method getCenter

        center = self.getCenter()

        #Get the position of x and y

        x = center.getX()

        y = center.getY()

        #Get the centre position

        self.center = Point(x + dx, y + dy)

        #Check the condition for the face to simile

        if dx < 0 and dy < 0:

            #Call the smile method

            self.smile()

            #Check the condition for the face to wink

        elif dx < 0 and dy > 1:

            #Call the method wink

            self.wink()

        #Check the condition for GrimFace

        elif dx > 0 and dy > 0:

            #Call the method initializeGrimFace()

            self.initializeGrimFace()

          #Otherwise, call the method mediate()

        else:

            self.meditate()

#Definition of method initializeGrimFace

    def initializeGrimFace(self):

        #Create a circle

        self.head = Circle(self.center, self.size)

        #Call the function to open the left eye

        self.leftEyeOpen()

        #Call the function to open the right eye

        self.rightEyeOpen()

        #Create an array for teeth

        self.teeth = []

        #Call the method to draw the mouth

        self.lineMouth()

        #Call the method to draw the face

        self.drawFace()

#Definition of method lineMouth

    def lineMouth(self):

        #Call the method clone()

        p1 = self.center.clone()

        #Condition to set the mouth

        p1.move(-self.mouthSize/2, self.mouthOff)

        #Call the method clone

        p2 = self.center.clone()

        #Condition to set the mouth

        p2.move(self.mouthSize/2, self.mouthOff)

        #Call the method Line()

        self.mouth = Line(p1, p2)

        #Return the line

        return Line(p1, p2)

    #Definition of method rectMouth()

    def rectMouth(self):

        #Get the position to place the mouth

        p1, p2 = self.mouth.getP1(), self.mouth.getP2()

        x1, x2, y1, y2 = p1.getX(), p2.getX(), p1.getY(), p2.getY()

        offset = self.eyeSize / 2

        self.mouth = Rectangle(Point(x1, y1 - offset), Point(x2, y2 + offset))

        #Return the position

        return x2, x1, y1, y2, offset

    #Definition of method unDraw()

    def unDraw(self):

        #Remove the head, left eye, right eye, teeth and mouth

        self.head.undraw()

        self.leftEye.undraw()

        self.rightEye.undraw()

        self.mouth.undraw()

        for tooth in self.teeth:

            tooth.undraw()

#Definition of method drawFace()

    def drawFace(self):

        #Draw the circle to place the outline of the face

        self.head = Circle(self.center, self.size)

        #Set the head to the window

        self.head.draw(self.window)

        #Set the left eye to the window

        self.leftEye.draw(self.window)

        #Set the right eye to the window

        self.rightEye.draw(self.window)

        #Set the mouth to the window

        self.mouth.draw(self.window)

    #Definition of leftEyeOpen()

    def leftEyeOpen(self):

        #Set the left eye to the circle

        self.leftEye = Circle(self.center, self.eyeSize)

        #condition to open and close the left eyes

        self.leftEye.move(-self.eyeOff, -self.eyeOff)

   #Definition of rightEyeOpen()

    def rightEyeOpen(self):

           #Set the right eye to the circle

        self.rightEye = Circle(self.center, self.eyeSize)

        #Condition to open and close the right eyes

        self.rightEye.move(self.eyeOff, -self.eyeOff)

     #Definition of leftEyeWink()

    def leftEyeWink(self):

        #Place the position of the left eye

        center = self.leftEye.getCenter()

        #Get the x and y value

        x = center.getX()

        y = center.getY()

        #Condition to get the leftWink

        leftWink = Line(Point(x - self.eyeSize, y), Point(x + self.eyeSize, y))

        #Set the value leftWink

        self.leftEye = leftWink

     #Definition of rightEyeWink()

    def rightEyeWink(self):

        #Place the position of the right eye

        center = self.rightEye.getCenter()

         #Get the x and y value

        x = center.getX()

        y = center.getY()

        #Condition to get the rightWink

        rightWink = Line(Point(x - self.eyeSize, y), Point(x + self.eyeSize, y))

      #Set the value rightEye

        self.rightEye = rightWink

    #Definition of wink()

    def wink(self):

        #Call the method unDraw()

        self.unDraw()

#Call the method lineMouth(), leftEyeOpen(), rightEyeWink(), drawFace()

        self.lineMouth()

        self.leftEyeOpen()

        self.rightEyeWink()

        self.drawFace()

    #Definition of method smile()

    def smile(self):

        #Call the method unDraw()

        self.unDraw()

        #Call the method rectMouth()

        x2, x1, y1, y2, offset = self.rectMouth()

        #Get xint value

        xint = abs(x2 - x1) / 8

        #Condition to append the mouth

        self.teeth.append(self.lineMouth())

        #Traverse the loop till i reaches 8

        for i in range (8):

                #Call the method Line() to get the two points

                t2 = Line(Point(x1 + i * xint, y1 - offset), Point((x1 + i * xint), y2 + offset))

                #Condition to append the teeth

                self.teeth.append(t2)

                #Check the condition to place the teeth

        for tooth in self.teeth:

            #Draw the tooth for the face

            tooth.draw(self.window)

            #Call the method reactMouth(), leftEyeOpen(), rightEyeOpen(), drawFace()

        self.rectMouth()

        self.leftEyeOpen()

        self.rightEyeOpen()

        self.drawFace()

    #Definition of method mediate()

    def meditate(self):

        #Call the respective method to undraw the face, draw mouth, right and left eye and face

        self.unDraw()

        self.lineMouth()

        self.leftEyeWink()

        self.rightEyeWink()

        self.drawFace()

Cbutton.py:

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 the required packages

from face import Face

from graphics import *

from cbutton import CButton

#Definition of method makeButton(0

def makeButtons(win):

    #Create a button Wink

    wink = CButton(win, Point(16, 17), 1, "Wink")

     #Create a button Meditate

    meditate = CButton(win, Point(12, 17), 1, "Meditate")

     #Create a button Smile

    smile = CButton(win, Point(8, 17), 1, "Smile")

     #Create a button Quit

    endGame = CButton(win, Point(4, 17), 1, "Quit")

    #Activate all the buttons

    wink.activate()

    meditate.activate()

    smile.activate()

    endGame.activate()

    #Return the values

    return wink, meditate, smile, endGame

    #Definition of method main()

def main():

    #Creating the interface

    win = GraphWin("Emoji Jawn", 600, 600)

    win.setCoords(20, 20, 0, 0)

    face = Face(win, Point(10,8), 7)

    wink, meditate, smile, endGame = makeButtons(win)

    #Call the method getMouse()

    pt = win.getMouse()

    #Check whether the endGame is clicked or not

    while not endGame.clicked(pt):

        #Check whther the Wink is clicked

        if wink.clicked(pt):

            #Call the method wink()

            face.wink()

            #Call the method getMouse()

            pt = win.getMouse()

            #Check whether the smile is clicked

        elif smile.clicked(pt):

            #Call the method smile()

            face.smile()

            #Call the getMouse() method

            pt = win.getMouse()

             #Check whether the meditate is clicked

        elif meditate.clicked(pt):

              #Call the method meditate()

            face.meditate()

             #Call the getMouse() method

            pt = win.getMouse()

        #Otherwise

        else:

            #Call the getMouse() method

            pt = win.getMouse()

    #close up shop

    win.close()

#Call the method main()

main()

Sample Output

Output:

Screenshot of output

Python Programming: An Introduction to Computer Science, 3rd Ed., Chapter 10, Problem 13PE , additional homework tip  1

Clicking Wink button:

Screenshot of output

Python Programming: An Introduction to Computer Science, 3rd Ed., Chapter 10, Problem 13PE , additional homework tip  2

Clicking Mediate button:

Screenshot of output

Python Programming: An Introduction to Computer Science, 3rd Ed., Chapter 10, Problem 13PE , additional homework tip  3

Clicking Smile button:

Screenshot of output

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

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
Write a class that represents a player in a game. The player should have a name, password,experience points, an inventory array of four strings, and a location x,y. Your class shouldhave mutator and accessor methods for all variables. For example: setName(), getName(). Itshould have a suitable display method. Mutators and accessors should be public but allvariables should be private. To implement get inventory, use string * getInv(); Use the scoperesolution operator to implement larger methods such as display(). Use in class methods forshorter methods such as setName(), getName(). (in C++)Example:void setName(string name){this->name = name;}string *getInv();...string* player::getInv(){return inventory;}Note that in the above method setName “this->” is required for disambiguation. If writtenvoid setName(string n){name = n;}“this->” is not required.Write a test program that creates three players and displays them.Example Output:This program generates three player objects and…
Create a class Rectangle with parameters length, breadth, and color. Use appropriate data types andaccess specifiers. Write overloaded constructors to create objects of rectangle. First constructor takesall the three parameters. Second constructer takes two parameters length and breadth. If only oneparameter is given then user creates square of red color. Write methods to set and get the values oflength, breadth and color. Write methods to find length of the diagonal of rectangle and to display thecomplete details of rectangle with area. Create another class TestRectangle which uses allconstructors to create the different objects, uses appropriate set and get methods wherever required.Display the details of every rectangle.
Create a class Rectangle with parameters length, breadth, and color. Use appropriate data types andaccess specifiers. Write overloaded constructors to create objects of rectangle. First constructor takesall the three parameters. Second constructer takes two parameters length and breadth. If only oneparameter is given then user creates square of red color. Write methods to set and get the values oflength, breadth and color. Write methods to find length of the diagonal of rectangle and to display thecomplete details of rectangle with area. Create another class TestRectangle which uses allconstructors to create the different objects, uses appropriate set and get methods wherever required.Display the details of every rectangle. (IN JAVA LANGUAGE)
Knowledge Booster
Background pattern image
Similar questions
SEE MORE QUESTIONS
Recommended textbooks for you
  • Text book image
    EBK JAVA PROGRAMMING
    Computer Science
    ISBN:9781337671385
    Author:FARRELL
    Publisher:CENGAGE LEARNING - CONSIGNMENT
    Text book image
    Microsoft Visual C#
    Computer Science
    ISBN:9781337102100
    Author:Joyce, Farrell.
    Publisher:Cengage Learning,
    Text book image
    EBK JAVA PROGRAMMING
    Computer Science
    ISBN:9781305480537
    Author:FARRELL
    Publisher:CENGAGE LEARNING - CONSIGNMENT
Text book image
EBK JAVA PROGRAMMING
Computer Science
ISBN:9781337671385
Author:FARRELL
Publisher:CENGAGE LEARNING - CONSIGNMENT
Text book image
Microsoft Visual C#
Computer Science
ISBN:9781337102100
Author:Joyce, Farrell.
Publisher:Cengage Learning,
Text book image
EBK JAVA PROGRAMMING
Computer Science
ISBN:9781305480537
Author:FARRELL
Publisher:CENGAGE LEARNING - CONSIGNMENT