Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

* Make a program faces.py that asks the user to click the mouse, and then draws a face at the point where the user clicked.

* Make a program faces.py that asks the user to click the mouse, and then draws a face at the point where the user clicked. Copy the makeFacefunction definition from the previous exercise, and use it! Elaborate this with a Simple Repeat Loop, so this is repeated six times: After each of 6 mouse clicks, a face immediately appears at the location of the latest click. Think how you can reuse your code each time through the loop!

from graphics import * import time

def moveAll(shapeList, dx, dy): ''' Move all shapes in shapeList by (dx, dy).''' for shape in shapeList: shape.move(dx, dy)

def moveAllOnLine(shapeList, dx, dy, repetitions, delay): '''Animate the shapes in shapeList along a line. Move by (dx, dy) each time. Repeat the specified number of repetitions. Have the specified delay (in seconds) after each repeat. ''' for i in range(repetitions): moveAll(shapeList, dx, dy) time.sleep(delay)

def makeFace(center, win): '''display face centered at center in window win. Return a list of the shapes in the face. ''' head = Circle(center, 25) head.setFill("yellow") head.draw(win)

eye1Center = center.clone() # face positions are relative to the center eye1Center.move(-10, 5) # locate further points in relation to others eye1 = Circle(eye1Center, 5) eye1.setFill('blue') eye1.draw(win)

eye2End1 = eye1Center.clone() eye2End1.move(15, 0) eye2End2 = eye2End1.clone() eye2End2.move(10, 0) eye2 = Line(eye2End1, eye2End2) eye2.setWidth(3) eye2.draw(win)

mouthCorner1 = center.clone() mouthCorner1.move(-10, -10) mouthCorner2 = mouthCorner1.clone() mouthCorner2.move(20, -5) mouth = Oval(mouthCorner1, mouthCorner2) mouth.setFill("red") mouth.draw(win)

topNose = center.clone() topNose.move(0,0) leftNose = topNose.clone() leftNose.move(-2,-2) rightNose = leftNose.clone() rightNose.move(5,0) faceNose = Polygon(topNose,leftNose,rightNose) faceNose.draw(win) return [head, eye1, eye2, faceNose, mouth]

def main(): width = 300 height = 300 win = GraphWin('Back and Forth', 300, 300) win.setCoords(0, 0, width, height)

rect = Rectangle(Point(200, 90), Point(220, 100)) rect.setFill("blue") rect.draw(win)

faceList = makeFace(Point(40, 100), win) faceList2 = makeFace(Point(150,125), win)

stepsAcross = 46 dx = 5 dy = 3 wait = .05 for i in range(3): moveAllOnLine(faceList, dx, 0, stepsAcross, wait) moveAllOnLine(faceList, -dx, dy, stepsAcross//2, wait) moveAllOnLine(faceList, -dx, -dy, stepsAcross//2, wait)

win.promptClose(win.getWidth()/2, 20)

main()

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Databases A Beginners Guide

Authors: Andy Oppel

1st Edition

007160846X, 978-0071608466

Students also viewed these Databases questions

Question

=+j Identify the challenges of training an international workforce.

Answered: 1 week ago