def spaceship_init(x, y, scale): '''Creates and returns a list of graphics objects to make up a spaceship''' shapes = [] r = gr.Rectangle(gr.Point(x - scale * 10, y), gr.Point(x + scale * 10, y - scale * 80)) r.setFill(gr.color_rgb(185, 150, 185)) shapes.append(r) p = gr.Polygon(gr.Point(x - scale * 10, y - scale * 80), gr.Point(x, y - scale * 100), gr.Point(x + scale * 10, y - scale * 80)) p.setFill(gr.color_rgb(150, 170, 200)) shapes.append(p) p = gr.Polygon(gr.Point(x - scale * 10, y), gr.Point(x - scale * 10, y - scale * 20), gr.Point(x - scale * 25, y)) p.setFill(gr.color_rgb(200, 170, 150)) shapes.append(p) p = gr.Polygon(gr.Point(x + scale * 10, y), gr.Point(x + scale * 10, y - scale * 20), gr.Point(x + scale * 25, y)) p.setFill(gr.color_rgb(200, 170, 150)) shapes.append(p) return shapes
def fire2_init(x, y, scale): '''Creates and returns a list of graphics objects to make up a fire''' shapes = [] p = gr.Polygon(gr.Point(x + scale * 30, y + scale * 63), gr.Point(x + scale * 30, y + scale * 45), gr.Point(x + scale * 20, y + scale * 63)) p.setFill(gr.color_rgb(255, 165, 0)) shapes.append(p) p = gr.Polygon(gr.Point(x + scale * 15, y + scale * 63), gr.Point(x + scale * 10, y + scale * 45), gr.Point(x + scale * 10, y + scale * 63)) p.setFill(gr.color_rgb(255, 165, 0)) shapes.append(p) p = gr.Polygon(gr.Point(x, y + scale * 63), gr.Point(x - scale * 5, y + scale * 45), gr.Point(x - scale * 10, y + scale * 63)) p.setFill(gr.color_rgb(255, 165, 0)) shapes.append(p) p = gr.Polygon(gr.Point(x - scale * 20, y + scale * 63), gr.Point(x - scale * 30, y + scale * 45), gr.Point(x - scale * 30, y + scale * 63)) p.setFill(gr.color_rgb(255, 165, 0)) shapes.append(p) return shapes
def potion_init(x, y, scale): '''Creates and returns a list of graphics objects to make up a potion''' shapes = [] p = gr.Polygon(gr.Point(x + scale * 30, y + scale * 80), gr.Point(x + scale * 40, y + scale * 60), gr.Point(x + scale * 40, y + scale * 40), gr.Point(x + scale * 50, y + scale * 40), gr.Point(x + scale * 50, y + scale * 60), gr.Point(x + scale * 60, y + scale * 80)) p.setFill(gr.color_rgb(198, 226, 255)) shapes.append(p) p = gr.Polygon(gr.Point(x + scale * 30, y + scale * 80), gr.Point(x + scale * 40, y + scale * 60), gr.Point(x + scale * 40, y + scale * 50), gr.Point(x + scale * 50, y + scale * 50), gr.Point(x + scale * 50, y + scale * 60), gr.Point(x + scale * 60, y + scale * 80)) p.setFill(gr.color_rgb(255, 62, 150)) shapes.append(p) r = gr.Rectangle(gr.Point(x + scale * 42, y + scale * 35), gr.Point(x + scale * 48, y + scale * 40)) r.setFill(gr.color_rgb(139, 71, 38)) shapes.append(r) return shapes
def cat_init(x, y, scale): '''Creates and returns a list of graphics objects to make up a cat''' shapes = [] #cat p = gr.Polygon(gr.Point(x + scale * 180, y + scale * 40), gr.Point(x + scale * 190, y + scale * 35), gr.Point(x + scale * 190, y + scale * 50)) p.setFill(gr.color_rgb(30, 30, 30)) shapes.append(p) p = gr.Polygon(gr.Point(x + scale * 180, y + scale * 40), gr.Point(x + scale * 170, y + scale * 35), gr.Point(x + scale * 170, y + scale * 50)) p.setFill(gr.color_rgb(30, 30, 30)) shapes.append(p) c = gr.Circle(gr.Point(x + scale * 180, y + scale * 50), scale * 10) c.setFill(gr.color_rgb(0, 0, 0)) shapes.append(c) c = gr.Circle(gr.Point(x + scale * 175, y + scale * 50), scale * 2) c.setFill(gr.color_rgb(67, 205, 128)) shapes.append(c) c = gr.Circle(gr.Point(x + scale * 185, y + scale * 50), scale * 2) c.setFill(gr.color_rgb(67, 205, 128)) shapes.append(c) #body r = gr.Rectangle(gr.Point(x + scale * 155, y + scale * 60), gr.Point(x + scale * 185, y + scale * 80)) r.setFill(gr.color_rgb(0, 0, 0)) shapes.append(r) c = gr.Circle(gr.Point(x + scale * 155, y + scale * 70), scale * 10) c.setFill(gr.color_rgb(0, 0, 0)) shapes.append(c) r = gr.Rectangle(gr.Point(x + scale * 120, y + scale * 65), gr.Point(x + scale * 155, y + scale * 70)) r.setFill(gr.color_rgb(0, 0, 0)) shapes.append(r) r = gr.Rectangle(gr.Point(x + scale * 120, y + scale * 40), gr.Point(x + scale * 125, y + scale * 70)) r.setFill(gr.color_rgb(0, 0, 0)) shapes.append(r) #legs r = gr.Rectangle(gr.Point(x + scale * 150, y + scale * 80), gr.Point(x + scale * 155, y + scale * 100)) r.setFill(gr.color_rgb(0, 0, 0)) shapes.append(r) r = gr.Rectangle(gr.Point(x + scale * 165, y + scale * 80), gr.Point(x + scale * 170, y + scale * 100)) r.setFill(gr.color_rgb(0, 0, 0)) shapes.append(r) r = gr.Rectangle(gr.Point(x + scale * 180, y + scale * 80), gr.Point(x + scale * 185, y + scale * 100)) r.setFill(gr.color_rgb(0, 0, 0)) shapes.append(r) return shapes
def riverboat(x, y, scale): # define the river and boat riverlist = [ g.Point(x - 1600 * scale, y + 10 * scale), # river point list g.Point(x + 100 * scale, y + 20 * scale), g.Point(x + 200 * scale, y + 10 * scale), g.Point(x + 250 * scale, y + 30 * scale), g.Point(x + 300 * scale, y + 20 * scale), g.Point(x + 450 * scale, y + 30 * scale), g.Point(x + 500 * scale, y + 10 * scale), g.Point(x + 600 * scale, y + 20 * scale), g.Point(x + 750 * scale, y + 30 * scale), g.Point(x + 1600 * scale, y + 10 * scale), g.Point(x + 1600 * scale, y + 110 * scale), g.Point(x + 750 * scale, y + 130 * scale), g.Point(x + 600 * scale, y + 120 * scale), g.Point(x + 500 * scale, y + 110 * scale), g.Point(x + 450 * scale, y + 130 * scale), g.Point(x + 300 * scale, y + 120 * scale), g.Point(x + 250 * scale, y + 130 * scale), g.Point(x + 200 * scale, y + 110 * scale), g.Point(x + 100 * scale, y + 120 * scale), g.Point(x - 1600 * scale, y + 110 * scale) ] riverflow = g.Polygon(riverlist) #river drawing riverflow.setFill("blue") riverflow.setOutline("green") riverflow.setWidth(5) boatlist1 = [ g.Point(x - 300 * scale, y + 70 * scale), # boat1 point list g.Point(x - 250 * scale, y + 60 * scale), g.Point(x - 200 * scale, y + 60 * scale), g.Point(x - 200 * scale, y + 80 * scale), g.Point(x - 250 * scale, y + 80 * scale) ] boatbody1 = g.Polygon(boatlist1) # boat1 drawing boatbody1.setFill("red") boatbody1.setOutline("black") boatbody1.setWidth(5) boatlist2 = [ g.Point(x - 100 * scale, y + 70 * scale), # boat2 point list g.Point(x - 50 * scale, y + 60 * scale), g.Point(x + 0 * scale, y + 60 * scale), g.Point(x + 0 * scale, y + 80 * scale), g.Point(x - 50 * scale, y + 80 * scale) ] boatbody2 = g.Polygon(boatlist2) # boat2 drawing boatbody2.setFill("orange") boatbody2.setOutline("black") boatbody2.setWidth(5) test = [riverflow, boatbody1, boatbody2] return test
def icecream_init(x,y,scale): ''' Creates the list of objects needed to draw an ice cream cone at position (x,y) with the given scale. ''' shapes = [] #cone IDX 0 t = gr.Polygon(gr.Point(x,y),gr.Point(x+5*scale,y-15*scale), gr.Point(x-5*scale,y-15*scale)) t.setFill(gr.color_rgb(222,184,135)) shapes.append(t) #scoops IDX 1-4 c = gr.Circle(gr.Point(x,y-20*scale),6*scale) c.setFill(gr.color_rgb(255,0,127)) shapes.append(c) c = gr.Circle(gr.Point(x,y-30*scale),6*scale) c.setFill(gr.color_rgb(0,255,128)) shapes.append(c) c = gr.Circle(gr.Point(x,y-40*scale),6*scale) c.setFill(gr.color_rgb(153,255,255)) shapes.append(c) c = gr.Circle(gr.Point(x,y-50*scale),6*scale) c.setFill(gr.color_rgb(255,153,153)) shapes.append(c) return shapes
def animate_mario(mario, frame, win): moustache = mario[4] if frame % 20 == 0: # move moustache up moustache.move(0, -5) elif frame % 20 == 10: # move moustache down moustache.move(0, 5) if frame % 80 == 0: # starting move right mario[0].undraw() # get the x, y values from overalls pts = mario[1].getPoints() # first point is the anchor # scale factor is difference in y values of first two points / 120 scale = (pts[0].getY() - pts[1].getY()) / 120 newshirt = gr.Polygon( red_shirt_points(pts[0].getX(), pts[0].getY(), scale, False)) newshirt.setFill('red') newshirt.draw(win) mario[1].undraw() mario[1].draw(win) # overdrawing the shirt mario[0] = newshirt elif frame % 80 == 40: # starting move left mario[0].undraw() # get the x, y values from overalls pts = mario[1].getPoints() # first point is the anchor # scale factor is difference in y values of first two points / 120 scale = (pts[0].getY() - pts[1].getY()) / 120 newshirt = gr.Polygon( red_shirt_points(pts[0].getX(), pts[0].getY(), scale, True)) newshirt.setFill('red') newshirt.draw(win) mario[1].undraw() mario[1].draw(win) # overdrawing the shirt mario[0] = newshirt # have all of mario move left to right if frame % 80 < 40: # move right with arm up for item in mario: item.move(2, 0) else: # move left with arm down for item in mario: item.move(-2, 0)
def citywhale(x, y, scale): # define a polygon for the body bodylist = [ gr.Point(x + 5 * scale, y - 5 * scale), gr.Point(x + 25 * scale, y - 2 * scale), gr.Point(x + 45 * scale, y - 8 * scale), gr.Point(x + 70 * scale, y - 15 * scale), gr.Point(x + 100 * scale, y - 6 * scale), gr.Point(x + 90 * scale, y - 20 * scale), gr.Point(x + 100 * scale, y - 34 * scale), gr.Point(x + 80 * scale, y - 25 * scale), gr.Point(x + 55 * scale, y - 27 * scale), gr.Point(x + 45 * scale, y - 30 * scale), gr.Point(x + 24 * scale, y - 27 * scale), gr.Point(x + 8 * scale, y - 24 * scale), gr.Point(x - 8 * scale, y - 25 * scale) ] whalebody = gr.Polygon(bodylist) whalebody.setFill('purple') whalebody.setOutline('darkblue') whalebody.setWidth(4) # define a polygon for the mouth mouthlist = [ gr.Point(x + 24 * scale, y - 27 * scale), gr.Point(x + 8 * scale, y - 24 * scale), gr.Point(x - 8 * scale, y - 25 * scale), gr.Point(x + 8 * scale, y - 32 * scale) ] whalemouth = gr.Polygon(mouthlist) whalemouth.setFill('grey') whalemouth.setOutline('dark blue') whalemouth.setWidth(2) # define four rectangles for the city # put all these objects into a list whale = [whalebody, whalemouth] # return the list return whale
def plant_init(x, y, scale): '''Creates and returns a list of graphics objects to make up a plant''' shapes = [] #pot r = gr.Rectangle(gr.Point(x + scale * 70, y + scale * 50), gr.Point(x + scale * 100, y + scale * 60)) r.setFill(gr.color_rgb(255, 130, 71)) shapes.append(r) p = gr.Polygon(gr.Point(x + scale * 80, y + scale * 80), gr.Point(x + scale * 75, y + scale * 60), gr.Point(x + scale * 95, y + scale * 60), gr.Point(x + scale * 90, y + scale * 80)) p.setFill(gr.color_rgb(255, 130, 71)) shapes.append(p) #leaves p = gr.Polygon(gr.Point(x + scale * 70, y + scale * 50), gr.Point(x + scale * 60, y + scale * 30), gr.Point(x + scale * 80, y + scale * 50)) p.setFill(gr.color_rgb(152, 251, 152)) shapes.append(p) p = gr.Polygon(gr.Point(x + scale * 75, y + scale * 50), gr.Point(x + scale * 80, y + scale * 20), gr.Point(x + scale * 85, y + scale * 50)) p.setFill(gr.color_rgb(152, 251, 152)) shapes.append(p) p = gr.Polygon(gr.Point(x + scale * 85, y + scale * 50), gr.Point(x + scale * 90, y + scale * 20), gr.Point(x + scale * 100, y + scale * 50)) p.setFill(gr.color_rgb(152, 251, 152)) shapes.append(p) p = gr.Polygon(gr.Point(x + scale * 90, y + scale * 50), gr.Point(x + scale * 110, y + scale * 30), gr.Point(x + scale * 100, y + scale * 50)) p.setFill(gr.color_rgb(152, 251, 152)) shapes.append(p) return shapes
def thumbStack(x, y, scale, win): #wrist:rectangle objects wrist = gr.Rectangle(gr.Point(x + 60 * scale, y + 105 * scale), gr.Point(x + 120 * scale, y + 215 * scale)) points = [ gr.Point(x + 120 * scale, y + 125 * scale), gr.Point(x + 142 * scale, y + 115 * scale), gr.Point(x + 183 * scale, y + 56 * scale), gr.Point(x + 190 * scale, y + 16 * scale), gr.Point(x + 210 * scale, y + 16 * scale), gr.Point(x + 220 * scale, y + 56 * scale), gr.Point(x + 204 * scale, y + 105 * scale), gr.Point(x + 262 * scale, y + 104 * scale), gr.Point(x + 259 * scale, y + 124 * scale), gr.Point(x + 245 * scale, y + 126 * scale), gr.Point(x + 259 * scale, y + 124 * scale), gr.Point(x + 258 * scale, y + 144 * scale), gr.Point(x + 244 * scale, y + 144 * scale), gr.Point(x + 258 * scale, y + 144 * scale), gr.Point(x + 256 * scale, y + 164 * scale), gr.Point(x + 243 * scale, y + 164 * scale), gr.Point(x + 256 * scale, y + 164 * scale), gr.Point(x + 254 * scale, y + 181 * scale), gr.Point(x + 241 * scale, y + 179 * scale), gr.Point(x + 254 * scale, y + 181 * scale), gr.Point(x + 251 * scale, y + 204 * scale), gr.Point(x + 120 * scale, y + 195 * scale), gr.Point(x + 120 * scale, y + 125 * scale) ] #thumb:polygon objects thumb = gr.Polygon(points) #set color for both objects wrist.setFill("dodgerblue") thumb.setFill("goldenrod") #set the termination condition if scale < 0.4: return #draw wrist and thumb wrist.draw(win) thumb.draw(win) #call thumbStack recursively thumbStack(x, y + scale * 200, scale * 0.8, win)
def background_init(x, y, scale): '''Creates and returns a list of graphics objects to make up a background''' shapes = [] r = gr.Rectangle(gr.Point(x, y), gr.Point(x + scale * 500, y + scale * 400)) r.setFill(gr.color_rgb(205, 170, 125)) shapes.append(r) r = gr.Rectangle(gr.Point(x, y + scale * 300), gr.Point(x + scale * 500, y + scale * 400)) r.setFill(gr.color_rgb(139, 71, 38)) shapes.append(r) #shelf r = gr.Rectangle(gr.Point(x + scale * 20, y + scale * 80), gr.Point(x + scale * 120, y + scale * 90)) r.setFill(gr.color_rgb(139, 71, 38)) shapes.append(r) r = gr.Rectangle(gr.Point(x + scale * 120, y + scale * 100), gr.Point(x + scale * 250, y + scale * 110)) r.setFill(gr.color_rgb(139, 71, 38)) shapes.append(r) r = gr.Rectangle(gr.Point(x + scale * 250, y + scale * 130), gr.Point(x + scale * 340, y + scale * 140)) r.setFill(gr.color_rgb(139, 71, 38)) shapes.append(r) r = gr.Rectangle(gr.Point(x + scale * 340, y + scale * 170), gr.Point(x + scale * 450, y + scale * 180)) r.setFill(gr.color_rgb(139, 71, 38)) shapes.append(r) #CrystalBallholder p = gr.Polygon(gr.Point(x + scale * 210, y + scale * 100), gr.Point(x + scale * 220, y + scale * 90), gr.Point(x + scale * 240, y + scale * 90), gr.Point(x + scale * 250, y + scale * 100)) p.setFill(gr.color_rgb(108, 123, 139)) shapes.append(p) return shapes
def citywhale(x, y, scale): # define a polygon for the body, list of points bodylist = [ gr.Point(x + 5 * scale, y - 5 * scale), # starts at lower left of the whale body gr.Point(x + 25 * scale, y - 2 * scale), gr.Point(x + 45 * scale, y - 8 * scale), gr.Point(x + 70 * scale, y - 15 * scale), gr.Point(x + 100 * scale, y - 6 * scale), gr.Point(x + 90 * scale, y - 20 * scale), gr.Point(x + 100 * scale, y - 34 * scale), gr.Point(x + 80 * scale, y - 25 * scale), gr.Point(x + 55 * scale, y - 27 * scale), gr.Point(x + 45 * scale, y - 30 * scale), gr.Point(x + 30 * scale, y - 30 * scale), gr.Point(x + 24 * scale, y - 27 * scale), gr.Point(x + 8 * scale, y - 24 * scale), gr.Point(x - 8 * scale, y - 25 * scale) ] whalebody = gr.Polygon(bodylist) whalebody.setFill("purple") whalebody.setOutline("dark blue") whalebody.setWidth(4) # define a polygon for the mouth mouthlist = [ gr.Point(x + 24 * scale, y - 27 * scale), gr.Point(x + 8 * scale, y - 24 * scale), gr.Point(x - 8 * scale, y - 25 * scale), gr.Point(x + 8 * scale, y - 30 * scale) ] whalemouth = gr.Polygon(mouthlist) whalemouth.setFill("grey") whalemouth.setOutline("dark blue") whalemouth.setWidth(2) c1 = gr.Circle(gr.Point(x + 20 * scale, y - 20 * scale), 5) c1.setFill("black") # define four rectangles for the city b1 = gr.Rectangle(gr.Point(x + 30 * scale, y - 30 * scale), gr.Point(x + 34 * scale, y - 44 * scale)) b1.setFill('turquoise') b2 = gr.Rectangle(gr.Point(x + 34 * scale, y - 30 * scale), gr.Point(x + 38 * scale, y - 50 * scale)) b2.setFill('red') b3 = gr.Rectangle(gr.Point(x + 38 * scale, y - 30 * scale), gr.Point(x + 42 * scale, y - 40 * scale)) b3.setFill('green') b4 = gr.Rectangle(gr.Point(x + 42 * scale, y - 30 * scale), gr.Point(x + 46 * scale, y - 38 * scale)) b4.setFill('orange') # put all of these objects into a list whale = [whalebody, whalemouth, c1, b1, b2, b3, b4] # return the list return whale
def init_birds(x, y, scale): bird1list = [ g.Point(x + 10 * scale, y + 10 * scale), # bird1 point list g.Point(x + 20 * scale, y + 10 * scale), g.Point(x + 20 * scale, y + 15 * scale), g.Point(x + 30 * scale, y + 15 * scale), g.Point(x + 40 * scale, y + 5 * scale), g.Point(x + 40 * scale, y + 15 * scale), g.Point(x + 60 * scale, y + 15 * scale), g.Point(x + 60 * scale, y + 20 * scale), g.Point(x + 40 * scale, y + 20 * scale), g.Point(x + 40 * scale, y + 30 * scale), g.Point(x + 30 * scale, y + 20 * scale), g.Point(x + 20 * scale, y + 20 * scale), g.Point(x + 20 * scale, y + 25 * scale), g.Point(x + 10 * scale, y + 25 * scale), g.Point(x + 0 * scale, y + 17.5 * scale) ] bird1 = g.Polygon(bird1list) #bird1 drawing bird1.setFill("blue") bird1.setOutline("red") bird1.setWidth(1) bird2list = [ g.Point(x + 60 * scale, y + 30 * scale), # bird2 point list g.Point(x + 70 * scale, y + 30 * scale), g.Point(x + 70 * scale, y + 35 * scale), g.Point(x + 80 * scale, y + 35 * scale), g.Point(x + 90 * scale, y + 25 * scale), g.Point(x + 90 * scale, y + 35 * scale), g.Point(x + 110 * scale, y + 35 * scale), g.Point(x + 110 * scale, y + 40 * scale), g.Point(x + 90 * scale, y + 40 * scale), g.Point(x + 90 * scale, y + 50 * scale), g.Point(x + 80 * scale, y + 40 * scale), g.Point(x + 70 * scale, y + 40 * scale), g.Point(x + 70 * scale, y + 45 * scale), g.Point(x + 60 * scale, y + 45 * scale), g.Point(x + 50 * scale, y + 37.5 * scale) ] bird2 = g.Polygon(bird2list) #bird2 drawing bird2.setFill("pink") bird2.setOutline("red") bird2.setWidth(1) bird3list = [ g.Point(x - 10 * scale, y + 10 * scale), # bird3 point list g.Point(x - 20 * scale, y + 10 * scale), g.Point(x - 20 * scale, y + 15 * scale), g.Point(x - 30 * scale, y + 15 * scale), g.Point(x - 40 * scale, y + 5 * scale), g.Point(x - 40 * scale, y + 15 * scale), g.Point(x - 60 * scale, y + 15 * scale), g.Point(x - 60 * scale, y + 20 * scale), g.Point(x - 40 * scale, y + 20 * scale), g.Point(x - 40 * scale, y + 30 * scale), g.Point(x - 30 * scale, y + 20 * scale), g.Point(x - 20 * scale, y + 20 * scale), g.Point(x - 20 * scale, y + 25 * scale), g.Point(x - 10 * scale, y + 25 * scale), g.Point(x + 0 * scale, y + 17.5 * scale) ] bird3 = g.Polygon(bird3list) #bird3 drawing bird3.setFill("blue") bird3.setOutline("red") bird3.setWidth(1) bird4list = [ g.Point(x + 40 * scale, y + 30 * scale), # bird4 point list g.Point(x + 30 * scale, y + 30 * scale), g.Point(x + 30 * scale, y + 35 * scale), g.Point(x + 20 * scale, y + 35 * scale), g.Point(x + 10 * scale, y + 25 * scale), g.Point(x + 10 * scale, y + 35 * scale), g.Point(x - 10 * scale, y + 35 * scale), g.Point(x - 10 * scale, y + 40 * scale), g.Point(x + 10 * scale, y + 40 * scale), g.Point(x + 10 * scale, y + 50 * scale), g.Point(x + 20 * scale, y + 40 * scale), g.Point(x + 30 * scale, y + 40 * scale), g.Point(x + 30 * scale, y + 45 * scale), g.Point(x + 40 * scale, y + 45 * scale), g.Point(x + 50 * scale, y + 37.5 * scale) ] bird4 = g.Polygon(bird4list) #bird4 drawing bird4.setFill("pink") bird4.setOutline("red") bird4.setWidth(1) test4 = [bird1, bird2, bird3, bird4] return test4
def background_init(x,y,scale): ''' Creates the list of objects needed to draw the background scene at position (x,y) with the given scale. ''' shapes = [] #sky IDX 0 r = gr.Rectangle(gr.Point(x,y),gr.Point(x+scale*400,y+scale*400)) r.setFill(gr.color_rgb(107,142,35)) shapes.append(r) #ground IDX 1 r = gr.Rectangle(gr.Point(x,y+300*scale),gr.Point(x+scale*400,y-scale*400)) r.setFill(gr.color_rgb(0,191,255)) shapes.append(r) #sun IDX 2 c = gr.Circle(gr.Point(x+325*scale,y+75*scale),20*scale) c.setFill(gr.color_rgb(255,255,0)) shapes.append(c) #yellow rays IDX 3-6 t = gr.Polygon(gr.Point(x+325*scale,y+40*scale),gr.Point(x+327*scale,y+50*scale), gr.Point(x+323*scale,y+50*scale)) t.setFill(gr.color_rgb(255,255,0)) shapes.append(t) t = gr.Polygon(gr.Point(x+360*scale,y+75*scale),gr.Point(x+350*scale,y+73*scale), gr.Point(x+350*scale,y+77*scale)) t.setFill(gr.color_rgb(255,255,0)) shapes.append(t) t = gr.Polygon(gr.Point(x+325*scale,y+110*scale),gr.Point(x+327*scale,y+100*scale), gr.Point(x+323*scale,y+100*scale)) t.setFill(gr.color_rgb(255,255,0)) shapes.append(t) t = gr.Polygon(gr.Point(x+290*scale,y+75*scale),gr.Point(x+300*scale,y+73*scale), gr.Point(x+300*scale,y+77*scale)) t.setFill(gr.color_rgb(255,255,0)) shapes.append(t) #orange rays IDX 7-10 t = gr.Polygon(gr.Point(x+352*scale,y+50*scale),gr.Point(x+341*scale,y+57*scale), gr.Point(x+344*scale,y+60*scale)) t.setFill(gr.color_rgb(255,150,0)) shapes.append(t) t = gr.Polygon(gr.Point(x+352*scale,y+100*scale),gr.Point(x+341*scale,y+93*scale), gr.Point(x+344*scale,y+90*scale)) t.setFill(gr.color_rgb(255,150,0)) shapes.append(t) t = gr.Polygon(gr.Point(x+298*scale,y+100*scale),gr.Point(x+309*scale,y+93*scale), gr.Point(x+306*scale,y+90*scale)) t.setFill(gr.color_rgb(255,150,0)) shapes.append(t) t = gr.Polygon(gr.Point(x+298*scale,y+50*scale),gr.Point(x+309*scale,y+57*scale), gr.Point(x+306*scale,y+60*scale)) t.setFill(gr.color_rgb(255,150,0)) shapes.append(t) return shapes
def dog_init(x,y,scale): ''' Creates the list of objects needed to draw a dog at position (x,y) with the given scale. ''' shapes = [] #body IDX 0 o = gr.Oval(gr.Point(x,y),gr.Point(x+200*scale,y-75*scale)) o.setFill(gr.color_rgb(139,69,19)) shapes.append(o) #tail IDX 1 t = gr.Polygon(gr.Point(x,y-40*scale),gr.Point(x+5*scale,y-45*scale), gr.Point(x-50*scale,y-100*scale)) t.setFill(gr.color_rgb(139,69,19)) shapes.append(t) #legs IDX 2-5 o = gr.Oval(gr.Point(x+20*scale,y-20*scale),gr.Point(x+30*scale,y+60*scale)) o.setFill(gr.color_rgb(139,69,19)) shapes.append(o) o = gr.Oval(gr.Point(x+27*scale,y-20*scale),gr.Point(x+37*scale,y+60*scale)) o.setFill(gr.color_rgb(139,69,19)) shapes.append(o) o = gr.Oval(gr.Point(x+153*scale,y-20*scale),gr.Point(x+163*scale,y+60*scale)) o.setFill(gr.color_rgb(139,69,19)) shapes.append(o) o = gr.Oval(gr.Point(x+170*scale,y-20*scale),gr.Point(x+180*scale,y+60*scale)) o.setFill(gr.color_rgb(139,69,19)) shapes.append(o) #head IDX 6 c = gr.Circle(gr.Point(x+210*scale,y-85*scale),40*scale) c.setFill(gr.color_rgb(139,69,19)) shapes.append(c) #ear IDX 7 o = gr.Oval(gr.Point(x+180*scale,y-120*scale),gr.Point(x+200*scale,y-60*scale)) o.setFill(gr.color_rgb(160,82,45)) shapes.append(o) #eye IDX 8 c = gr.Circle(gr.Point(x+220*scale,y-110*scale),8*scale) c.setFill(gr.color_rgb(30,144,255)) shapes.append(c) #nose IDX 9 c = gr.Circle(gr.Point(x+250*scale,y-90*scale),10*scale) c.setFill(gr.color_rgb(199,21,133)) shapes.append(c) #tongue IDX 10 o = gr.Oval(gr.Point(x+245*scale,y-75*scale),gr.Point(x+280*scale,y-80*scale)) o.setFill(gr.color_rgb(219,112,147)) shapes.append(o) #neck neck = gr.Polygon(gr.Point(x+200*scale,y-46*scale),gr.Point(x+190*scale,y-40*scale), gr.Point(x+230*scale,y+27*scale),gr.Point(x+237*scale,y+20)) neck.setFill(gr.color_rgb(139,69,19)) shapes.append(neck) return shapes
def witch_init(x, y, scale): '''Creates and returns a list of graphics objects to make up a witch''' shapes = [] #hat p = gr.Polygon(gr.Point(x, y - scale * 120), gr.Point(x + scale * 25, y - scale * 80), gr.Point(x - scale * 35, y - scale * 80), gr.Point(x - scale * 35, y - scale * 70), gr.Point(x + scale * 35, y - scale * 70), gr.Point(x + scale * 35, y - scale * 80), gr.Point(x - scale * 25, y - scale * 80)) p.setFill(gr.color_rgb(30, 30, 30)) shapes.append(p) #hatribbon p = gr.Polygon(gr.Point(x - scale * 25, y - scale * 80), gr.Point(x - scale * 23, y - scale * 85), gr.Point(x + scale * 23, y - scale * 85), gr.Point(x + scale * 25, y - scale * 80)) p.setFill(gr.color_rgb(128, 0, 128)) shapes.append(p) #witch's hair r = gr.Rectangle(gr.Point(x - scale * 15, y - scale * 70), gr.Point(x - scale * 25, y - scale * 30)) r.setFill(gr.color_rgb(0, 0, 0)) shapes.append(r) r = gr.Rectangle(gr.Point(x + scale * 25, y - scale * 70), gr.Point(x + scale * 15, y - scale * 30)) r.setFill(gr.color_rgb(0, 0, 0)) shapes.append(r) r = gr.Rectangle(gr.Point(x - scale * 15, y - scale * 70), gr.Point(x + scale * 15, y - scale * 60)) r.setFill(gr.color_rgb(0, 0, 0)) shapes.append(r) #witch's face r = gr.Rectangle(gr.Point(x - scale * 15, y - scale * 60), gr.Point(x + scale * 15, y - scale * 40)) r.setFill(gr.color_rgb(0, 205, 0)) shapes.append(r) c = gr.Circle(gr.Point(x - scale * 10, y - scale * 50), 1) c.setFill(gr.color_rgb(0, 0, 0)) shapes.append(c) c = gr.Circle(gr.Point(x + scale * 10, y - scale * 50), 1) c.setFill(gr.color_rgb(0, 0, 0)) shapes.append(c) p = gr.Polygon(gr.Point(x, y - scale * 43), gr.Point(x - scale * 3, y - scale * 47), gr.Point(x + scale * 3, y - scale * 47)) p.setFill(gr.color_rgb(255, 182, 193)) shapes.append(p) #witch body p = gr.Polygon(gr.Point(x, y - scale * 40), gr.Point(x - scale * 15, y + scale * 10), gr.Point(x + scale * 15, y + scale * 10)) p.setFill(gr.color_rgb(30, 30, 30)) shapes.append(p) p = gr.Polygon(gr.Point(x, y - scale * 40), gr.Point(x - scale * 15, y + scale * 10), gr.Point(x - scale * 25, y + scale * 10)) p.setFill(gr.color_rgb(128, 0, 128)) shapes.append(p) p = gr.Polygon(gr.Point(x, y - scale * 40), gr.Point(x + scale * 15, y + scale * 10), gr.Point(x + scale * 25, y + scale * 10)) p.setFill(gr.color_rgb(128, 0, 128)) shapes.append(p) return shapes
def init_mario(x, y, scale): # Overalls as a polygon points = [ gr.Point(x + 0 * scale, y - 0 * scale), gr.Point(x + 0 * scale, y - 120 * scale), gr.Point(x + 10 * scale, y - 120 * scale), gr.Point(x + 10 * scale, y - 170 * scale), gr.Point(x + 20 * scale, y - 170 * scale), gr.Point(x + 20 * scale, y - 120 * scale), gr.Point(x + 40 * scale, y - 120 * scale), gr.Point(x + 40 * scale, y - 170 * scale), gr.Point(x + 50 * scale, y - 170 * scale), gr.Point(x + 50 * scale, y - 120 * scale), gr.Point(x + 60 * scale, y - 120 * scale), gr.Point(x + 60 * scale, y - 0 * scale), gr.Point(x + 40 * scale, y - 0 * scale), gr.Point(x + 40 * scale, y - 60 * scale), gr.Point(x + 20 * scale, y - 60 * scale), gr.Point(x + 20 * scale, y - 0 * scale) ] overalls = gr.Polygon(points) overalls.setFill('steel blue') # red shirt shirt = gr.Polygon(red_shirt_points(x, y, scale, False)) shirt.setFill('red') head = gr.Circle(gr.Point(x + 30 * scale, y - 195 * scale), 25 * scale) head.setFill('salmon') points = [ gr.Point(x - 15 * scale, y - 210 * scale), gr.Point(x - 15 * scale, y - 215 * scale), gr.Point(x + 5 * scale, y - 215 * scale), gr.Point(x + 10 * scale, y - 235 * scale), gr.Point(x + 50 * scale, y - 235 * scale), gr.Point(x + 60 * scale, y - 210 * scale) ] hat = gr.Polygon(points) hat.setFill('red') points = [ gr.Point(x + 5 * scale, y - 175 * scale), gr.Point(x + 10 * scale, y - 180 * scale), gr.Point(x + 20 * scale, y - 182 * scale), gr.Point(x + 40 * scale, y - 182 * scale), gr.Point(x + 50 * scale, y - 180 * scale), gr.Point(x + 55 * scale, y - 175 * scale), gr.Point(x + 55 * scale, y - 178 * scale), gr.Point(x + 50 * scale, y - 183 * scale), gr.Point(x + 40 * scale, y - 185 * scale), gr.Point(x + 20 * scale, y - 185 * scale), gr.Point(x + 10 * scale, y - 183 * scale), gr.Point(x + 5 * scale, y - 178 * scale) ] moustache = gr.Polygon(points) moustache.setFill('black') lefteye = gr.Circle(gr.Point(x + 22 * scale, y - 200 * scale), 3) righteye = gr.Circle(gr.Point(x + 38 * scale, y - 200 * scale), 3) lefteye.setFill('black') righteye.setFill('black') mario = [shirt, overalls, head, hat, moustache, lefteye, righteye] return mario