Hey everyone. Noob poster here so bear with me. So the code below makes a drawing of a face move around the graphics window. However, the face is noseless. My dilema is that I absolutely can't figure out how to add a nose to the face and have it move around with the face as well. As far as I know, there is no way to create a triangle, only a polygon but a polygon requires specific coordinates to create it. How do I make a triangle nose for this guy, writing code in relation to the face and not using general coordinates? If any of what I said made sense... Also, I tried to write some code to do this, and the code that I did is currently set as a note. Any help would be appreciated. No need for a straight anwer if you don't want, just something to help get me moving. Thanks all.
from graphics import * import time def moveAll(shapeList, dx, dy): for shape in shapeList: shape.move(dx, dy) def moveAllOnLine(shapeList, dx, dy, repetitions, delay): for i in range(repetitions): moveAll(shapeList, dx, dy) time.sleep(delay) def makeFace(center, win): head = Circle(center, 25) head.setFill("yellow") head.draw(win) eye1Center = center.clone() eye1Center.move(-10, 5) 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) # noseTop = center.clone() # noseTop.move(0,0) # noseLeft = noseTop.clone() # noseLeft.move(-5,-5) # noseRight = noseLeft.cone() # noseRight.move(10,0) # nose = Polygon(noseTop,noseLeft,noseRight) # nose.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) return [head, eye1, eye2, mouth] def main(): winWidth = 300 winHeight = 300 win = GraphWin('Back and Forth', winWidth, winHeight) win.setCoords(0, 0, winWidth, winHeight) # make right side up coordinates! rect = Rectangle(Point(200, 90), Point(220, 100)) rect.setFill("blue") rect.draw(win) faceList = makeFace(Point(40, 100), win) #NEW faceList2 = makeFace(Point(150,125), win) #NEW stepsAcross = 46 #NEW section dx = 5 dy = 3 wait = .05 offScreenJump = winWidth*2 for i in range(3): moveAllOnLine(faceList, dx, 0, stepsAcross, wait) moveAll(faceList2, offScreenJump, 0) # face 2 jumps off the screen moveAllOnLine(faceList, -dx, dy, stepsAcross/2, wait) moveAll(faceList2, -offScreenJump, 0) # face 2 jumps back on screen moveAllOnLine(faceList, -dx, -dy, stepsAcross/2, wait) Text(Point(winWidth/2, 20), 'Click anywhere to quit.').draw(win) win.getMouse() win.close() main()