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
JAVA PPROGRAM   Write a program that prompts the user to enter a file name, then opens the file in text mode and reads names. The file contains one name on each line. The program then compares each name with the name that is at the end of the file in a symmetrical position. For example if the file contains 10 names, the name #1 is compared with name #10, name #2 is compared with name #9, and so on. If you find matches you should print the name and the line numbers where the match was found. While entering the file name, the program should allow the user to type quit to exit the program. If the file with a given name does not exist, then display a message and allow the user to re-enter the file name. The file may contain up to 100 names. You can use an array or ArrayList object of your choosing, however you can only have one array or ArrayList. Input validation: a) If the file does not exist, then you should display a message "File 'somefile.txt' is not found." and allow the…
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?
Python please: Given a text file named RandomTextFile.txt that contains newline characters, write a program that removes all the newline characters from the file. Your program should use the filename as input, and the output file should use the same filename as the original. Use the attached file RandomTextFile.txt to help you write and test your program. It contains the following text: Python is an interpreted language and the python interpreter is a computer program that executes code written in the python programming language. The python interactive interpreter is useful for simple operations or programs consisting of only a few lines. For more lines, a programmer can write Python code in a file, and then provide that file to the interpreter. For normal development a programmer installs python as an application on a local computer. Macintosh and Linux operating systems usually include python, while Windows does not. Programmers can download the latest version of python for free from…
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