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

Videos

Question
Book Icon
Chapter 6, Problem 16PE
Program Plan Intro

Draw a face

Program plan:

  • Import the header file.
  • Define the “drawFace” method
    • Get the “x” and “y” positions
    • Get the “p1” and “p2” positions
    • Call the “Oval” method for drawing the face
    • Set the color to the face
    • Draw the face
    • Get the “lc” and “rc” position
    • Call the “Circle” method
    • Set the color to the face
    • Call the “draw” method
    • Call the “Circle” method
    • Set the color to the face
    • Call the “draw” method
    • Get the “m1”, “m2”, and “m3” values
    • Call the “Rectangle” method
    • Set the color to the face
    • Call the “draw” method
    • Call the “Line” method
    • Get the center position
    • Get the “x” and “y” position
    • Call the “Point” method
    • Call the “Line” method
    • Call the “draw” method
    • Get the “x” and “y” position for different variables
    • Calculate “t” and “t1” value
    • Call the “Rectangle” method
    • Call the “draw” method
    • Iterate “i” until it reaches 7
      • Clone the teeth by calling “clone” method
      • Move the face by calling “move” method
      • Call the “draw” method
  • Define the main method.
    • Read the filename from the user
    • Get the image width and height from the file
    • Set the graph win size
    • Set the coords for graph
    • Draw the face
    • Get the number of faces from the user
    • Iterate “i” until it reaches “n” value
      • Get the mouse action
      • Call the “drawFace” method
  • Call the function “main()”.

Expert Solution & Answer
Check Mark
Program Description Answer

This Python program is used to get the GIF (Graphic Interchange format) file and draw the smileys when the user clicking the GIF image.

Explanation of Solution

Program:

#import the header file

from graphics import *

#definition of "drawFace" method

def drawFace(center, size, window):

    #get the "x" value

    x1 = center.getX()

    #get the "y" value

    y1 = center.getY()

    #get the "p1" value

    p1 = Point(x1-(.7 * size), y1 - size)

    #get the "p2" value

    p2 = Point(x1+(.7 * size), y1 + size)

    #call the "Oval" method

    head = Oval(p1, p2)

    #fill the color

    head.setFill("white")

    #call the "draw" method

    head.draw(window)

    #get the "lc" value

    lc = Point(x1 - .2 * size, y1 + .6 * size)

    #get the "rc" value

    rc = Point(x1 + .2 * size, y1 + .6 * size)

    #call the "Circle" method

    leftEye = Circle(lc, .13 * size)

    #fill the color

    leftEye.setFill("white")

    #call the "draw" method

    leftEye.draw(window)

    #call the "Circle" method

    rightEye = Circle(rc, .13 * size)

    #fill the color

    rightEye.setFill("white")

    #call the "draw" method

    rightEye.draw(window)

    #get the "m1" value

    m1 = Point(x1 - .3 * size, y1 - .5 * size)

    #get the "m2" value

    m2 = Point(x1 + .3 * size, y1 - .25 * size)

    #get the "m3" value

    m3 = Point(x1 + .3 * size, y1 - .5 * size)

    #call the "Rectangle" method

    mouth = Rectangle(m1, m2)

    #fill the color

    mouth.setFill("white")

    #call the "draw" method

    mouth.draw(window)

    #call the "Line" method

    leftLip = Line(m1, Point(x1- .3 * size, y1 - .25 * size))

    #get the center position

    mLeftCent = leftLip.getCenter()

    #get the "x" position

    mLCx = mLeftCent.getX()

    #get the "y" position

    mLCy = mLeftCent.getY()

    #call the "Point" method

    mRightCent = Point(x1 + .3 * size, mLCy)

    #call the "Line" method

    lip = Line(mLeftCent, mRightCent)

    #call the "draw" method

    lip.draw(window)

    #get the "x" positions

    m1x = m1.getX()

    m3x = m3.getX()

    #get the "y" positions

    m1y = m1.getY()

    m2y = m2.getY()

    #calculate the "t" value

    t = m1x - m3x

    #calculate the "t1" value

    t1 = Point(m1x - (1/8 * t), m2y)

    #call the "Rectangle" method

    teeth = Rectangle(m1, t1)

    #call the "draw" method

    teeth.draw(window)

    #iterate "i" until it reaches 7

    for i in range (7):

        #clone the face

        t2 = teeth.clone()

        #call the "move" method

        t2.move(-i * (1/8 * t), 0)

        #call the "draw" method

        t2.draw(window)

#definition of main method

def main():

    #get the input filename from the user

    fname = input("Enter filename: ")

    infile = Image(Point(10, 10), fname)

    #get the width of the image

    wWidth = infile.getWidth()

    #get the height of the image

    wHeight = infile.getHeight()

    #set graph win name

    window = GraphWin('Smile!', wWidth,wHeight)

    #set the coords

    window.setCoords(0, 0, 20, 20)

    #draw a smiley

    infile.draw(window)

    #get how many faces the user wants to draw

    n = eval(input("How many faces should we block? "))

    #iterate "i" until it reaches "n"

    for i in range(n):

        #get the mouse action

        point = window.getMouse()

        #draw a face by calling the method "drawFace"

        drawFace(point, 3, window)

#call the "main" method

main()

Sample Output

Output:

Enter filename: test_img.gif

How many faces should we block? 2

>>>

Screenshot of “Smile!” window

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

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
Task: Loading data from files This exercise will require you to load some information from files and use it in your program. scene.txt contains a description of a series of shapes and colours to draw. You need to write code to read in the file data and draw the requested shapes in the correct colour. Each line in scene.txt will contain one of the following starting keywords followed by some data:  COLOUR followed by 3 values: R, G, B  CIRCLE followed by 3 values: X, Y, RADIUS  RECT Followed by 4 values: X, Y, W, H  LINE Followed by 4 values: X1, Y1, X2, Y2 CIRCLES are defined from the center. RECT's are defined from the top left. All values are space separated, and you can assume all input is correct (no errors). Please solve this program to draw the scene.   I can't upload the file scene.txt, so I decide to screenshot a file for you.   Subject: Java Programming
Python: I am trying to write a simple GUI based program with two input fields “Directory/filename” and “word” next to each other and one output text field below. Using recursion the program should go through all the files and folders searching for the entered word. If a match is found the path to the file should be printed in the text field + the content of line the word is found in . It should also print how many folders and files has been searched and how many times the word was found. Any ideas?
Computer Science Using Java language Write a procedure that generates a regular heightfield in data-files/model/heightfield.off with elevation given by the grayscale values of an image file. Use a file dialog to select the file, a number box to scale the xx and zz integer coordinates by, and a number box to set the scale that 1.0 corresponds to for height. Make a button labelled “Generate” that launches the generator. Display a message on screen while generating and then flush the G3D::ArticulatedModel cache, and reload the current scene on completion.
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
EBK JAVA PROGRAMMING
Computer Science
ISBN:9781337671385
Author:FARRELL
Publisher:CENGAGE LEARNING - CONSIGNMENT
Text book image
C++ Programming: From Problem Analysis to Program...
Computer Science
ISBN:9781337102087
Author:D. S. Malik
Publisher:Cengage Learning
C - File I/O; Author: Tutorials Point (India) Ltd.;https://www.youtube.com/watch?v=cEfuwpbGi1k;License: Standard YouTube License, CC-BY
file handling functions in c | fprintf, fscanf, fread, fwrite |; Author: Education 4u;https://www.youtube.com/watch?v=aqeXS1bJihA;License: Standard Youtube License