wait for in range( )moveallonline(facelistdx stepsacrosswaitmoveallonline(facelist-dxdystepsacross// waitmoveallonline(facelist-dx-dystepsacross// waitwin promptclose(win getwidth()/ main(read the following discussion of program parts as mentioned abovethe face construction function allows parameter to specify where the center of the face is the other parameter is the graphwin that will contain the face def makeface(centerwin)then the head is easily drawnusing this centerrather than the previous cir with its specific center point ( )head circle(center head setfill('yellow'head draw(winfor the remaining points used in the construction there is the issue of keeping the right relation to the center this is accomplished much as in the creation of the second corner point in the makerectangle function in section issues with mutable objects (page clone of the original center point is madeand then moved by the difference in the positions of the originally specified points for instancein the original facethe center of the head and first eye were at ( and ( respectively that means shift between the two coordinates of (- )since - - and - eye center center clone(face positions are relative to the center eye center move(- locate further points in relation to others eye circle(eye center eye setfill('blue'eye draw(winthe only other changes to the face are similarcloning and moving pointsrather than specifying them with explicit coordinates eye end eye center clone(eye end move( eye end eye end clone(eye end move( eye line(eye end eye end eye setwidth( eye draw(winmouthcorner center clone(mouthcorner move(- - mouthcorner mouthcorner clone(mouthcorner move( - mouth oval(mouthcorner mouthcorner mouth setfill('red'mouth draw(winfinallythe list of elements for the face must be returned to the caller graphics