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
The function print_last_line in python takes one parameter, fname, the name of a text file. The function should open the file for reading, read the lines of the file until it reaches the end, print out the last line in the file, report the number of lines contained in the file, and close the file. Hint: Use a for loop to iterate over the lines and accumulate the count. For example: Test Result print_last_line("wordlist1.txt") maudlin The file has 5 lines.
Your program should use a loop to read data from a text file which contains students' names and 3 exam scores. The program should calculate the exam average for each student, determine the appropriate letter grade for that exam average, and print the name, average, and letter grade. After printing all this, you need to print the count of the total number of A's, B's, C's, D's, and F's for the whole class. The text file you need to use can be accessed using this link:   scores.txt.   Copy this file to the folder where your program will reside. The text file contains a list of 30 records, and each record contains a name and that person's 3 test scores. Each field is separated by a tab character. The first 2 records looks like this: Davis      88     92     84Wilson     98     80     73 and so on. Your program will need to open this file and read each line until the end of file. I recommend calculating a student's exam average and letter grade as you read the file, although this is not a…
Write a program that reads by asking the user the name of the file. After opening it, read it into the structure of array. The input file is in the format: firstName  lastName age result (Contents of the input file) The Temp 0 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 Edward Newman 61 3 1 2 2 2 3 5 3 5 3 5 1 3 1 4 3 5 2 5 3 5 1 3 1 5 1 5 3 1 1 3 1 3 1 3 3 5 2 1 2 3 5 1 1 3 3 5 3 1 5 The program reads the result into the structure called TheResult. The constants and the structure to be used is given below: const int EXTROVERSION = 0; const int AGREEABLENESS = 1; const int CONSCIENTIOUSNESS = 2; const int NEUROTICISM = 3; const int OPEN_TO_EXPERIENCE = 4; const int NUM_QUESTIONS = 50; const int NUM_RESULT = 5; const int MAX_RESULT = 5; struct TheResult {   string firstName;   string lastName;   int age;   int answers[NUM_QUESTIONS]; // result   double normalizedResult[NUM_RESULT];   }; The name of the input file is…
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