def build_karel4(): """ This function builds the fourth karel """ add = 3 head = GOval(80, 55, x=190 + 120 * add, y=167) head.filled = True head.color = 'black' head.fill_color = 'gray' window.add(head) hair1 = GLine(590, 167, 590, 161) hair2 = GLine(588, 168, 585, 162) hair3 = GLine(592, 168, 595, 162) hair4 = GLine(585, 168, 582, 162) hair5 = GLine(595, 168, 598, 162) window.add(hair1) window.add(hair2) window.add(hair3) window.add(hair4) window.add(hair5) r_eye = GOval(14, 14, x=212 + 120 * add, y=189) r_eye.filled = True r_eye.color = 'black' r_eye.fill_color = 'blue' window.add(r_eye) l_eye = GOval(14, 14, x=235 + 120 * add, y=189) l_eye.filled = True l_eye.color = 'black' l_eye.fill_color = 'blue' window.add(l_eye) hands = GRect(105, 45, x=177 + 120 * add, y=237) hands.filled = True hands.color = 'black' hands.fill_color = 'lime' window.add(hands) body_1 = GRect(60, 65, x=201 + 120 * add, y=223) body_1.filled = True body_1.color = 'black' body_1.fill_color ='blue' window.add(body_1) body_2 = GRect(80, 60, x=190 + 120 * add, y=230) body_2.filled = True body_2.color = 'black' body_2.fill_color = 'blue' window.add(body_2) r_foot = GOval(29, 24, x=190 + 120 * add, y=290) r_foot.filled = True r_foot.color = 'black' r_foot.fill_color = 'red' window.add(r_foot) l_foot = GOval(29, 24, x=241 + 120 * add, y=290) l_foot.filled = True l_foot.color = 'black' l_foot.fill_color = 'red' window.add(l_foot) label = GRect(20, 20, x=218+120*add, y=130) label.filled = True label.fill_color = 'forestgreen' label.color = 'forestgreen' window.add(label)
def couldsOval(position_x,position_y): """ The following code print out some cloud """ for i in range(position_x,window.width,100): clouds = GOval(50,30,x=i,y=position_y+10) window.add(clouds) clouds.filled = True clouds.color = "Blue" clouds.fill_color = "Blue" for j in range(position_x+25,window.width,100): clouds = GOval(40,30,x=j,y=position_y) window.add(clouds) clouds.filled = True clouds.color = "Blue" clouds.fill_color = "Blue" for k in range(position_x+25,window.width,100): clouds = GOval(40,30,x=k,y=position_y+20) window.add(clouds) clouds.filled = True clouds.color = "Blue" clouds.fill_color = "Blue" for l in range(position_x-25,window.width,100): clouds = GOval(40,30,x=l,y=position_y) window.add(clouds) clouds.filled = True clouds.color = "Blue" clouds.fill_color = "Blue" for m in range(position_x-25,window.width,100): clouds = GOval(40,30,x=m,y=position_y+20) window.add(clouds) clouds.filled = True clouds.color = "Blue" clouds.fill_color = "Blue"
def dinosaur(): dinosaur_img = GOval(250, 400, x=25, y=540) dinosaur_img.filled = True dinosaur_img.fill_color = 'green' dinosaur_img.color = 'green' window.add(dinosaur_img) dinosaur_head_img = GOval(230, 300, x=100, y=600) dinosaur_head_img.filled = True dinosaur_head_img.fill_color = 'green' dinosaur_head_img.color = 'green' window.add(dinosaur_head_img) dinosaur_eye_img = GOval(30, 50, x=200, y=585) dinosaur_eye_img.filled = True dinosaur_eye_img.fill_color = 'lightgreen' dinosaur_eye_img.color = 'lightgreen' window.add(dinosaur_eye_img) dinosaur_eye1_img = GOval(15, 15, x=212, y=590) dinosaur_eye1_img.filled = True dinosaur_eye1_img.fill_color = 'black' dinosaur_eye1_img.color = 'black' window.add(dinosaur_eye1_img) dinosaur_eye1_img = GOval(5, 5, x=222, y=590) dinosaur_eye1_img.filled = True dinosaur_eye1_img.fill_color = 'white' dinosaur_eye1_img.color = 'black' window.add(dinosaur_eye1_img)
def face(dx=0, dy=0, main_color='greenyellow', necklace_color='purple'): """ Function: draw face Principle: use ellipse subtraction to create curved shape :param dx: x-axis displacement :param dy: y-axis displacement :param main_color: main color :param necklace_color: necklace color """ face = GOval(350, 200, x=dx + 135, y=dy + 135) face.filled = True face.color = main_color face.fill_color = main_color window.add(face) necklace = GOval(300, 70, x=dx + 160, y=dy + 270) necklace.filled = True necklace.color = necklace_color necklace.fill_color = necklace_color window.add(necklace) necklace_x = GOval(330, 100, x=dx + 145, y=dy + 215) necklace_x.filled = True necklace_x.color = main_color necklace_x.fill_color = main_color window.add(necklace_x)
def ear(dx=0, dy=0, main_color='greenyellow', back_color='white'): """ Function: draw ears Principle: use ellipse subtraction to create curved shape :param dx: x-axis displacement :param dy: y-axis displacement :param back_color: background color :param main_color: main color """ l_ear = GOval(80, 150, x=dx + 80, y=dy + 150) l_ear.filled = True l_ear.color = main_color l_ear.fill_color = main_color window.add(l_ear) l_ear_x = GOval(40, 140, x=dx + 70, y=dy + 155) l_ear_x.filled = True l_ear_x.color = back_color l_ear_x.fill_color = back_color window.add(l_ear_x) r_ear = GOval(80, 150, x=dx + 460, y=dy + 150) r_ear.filled = True r_ear.color = main_color r_ear.fill_color = main_color window.add(r_ear) r_ear_x = GOval(40, 140, x=dx + 510, y=dy + 155) r_ear_x.filled = True r_ear_x.color = back_color r_ear_x.fill_color = back_color window.add(r_ear_x)
def mac_window(): # create Mac window big_rect = GRect(750, 500, x=5, y=5) big_rect.color = 'lightgrey' # create tool bar small_rect = GRect(750, 18, x=5, y=5) small_rect.filled = True small_rect.color = 'lightgrey' small_rect.fill_color = 'gainsboro' # create close window button oval_1 = GOval(12, 12, x=7, y=7) oval_1.filled = True oval_1.color = 'tomato' oval_1.fill_color = 'tomato' # create minimize window button oval_2 = GOval(12, 12, x=27, y=7) oval_2.filled = True oval_2.color = 'gold' oval_2.fill_color = 'gold' # create maximize window button oval_3 = GOval(12, 12, x=47, y=7) oval_3.filled = True oval_3.color = 'limegreen' oval_3.fill_color = 'limegreen' window.add(big_rect) window.add(small_rect) window.add(oval_1) window.add(oval_2) window.add(oval_3)
def build_karel1(): """ This function builds the first karel """ head = GOval(80, 55, x=190, y=167) head.filled = True head.color = 'black' head.fill_color = 'gray' window.add(head) r_eye = GRect(13, 13, x=212, y=189) r_eye.filled = True r_eye.color = 'black' r_eye.fill_color = 'blue' window.add(r_eye) l_eye = GRect(13, 13, x=235, y=189) l_eye.filled = True l_eye.color = 'black' l_eye.fill_color = 'blue' window.add(l_eye) r_eyeb = GLine(212, 185, 225, 185) window.add(r_eyeb) l_eyeb = GLine(235, 185, 248, 185) window.add(l_eyeb) hands = GRect(105, 45, x=177, y=237) hands.filled = True hands.color = 'black' hands.fill_color = 'lime' window.add(hands) body_1 = GRect(60, 65, x=201, y=223) body_1.filled = True body_1.color = 'black' body_1.fill_color = 'blue' window.add(body_1) body_2 = GRect(80, 60, x=190, y=230) body_2.filled = True body_2.color = 'black' body_2.fill_color = 'blue' window.add(body_2) r_foot = GOval(29, 24, x=190, y=290) r_foot.filled = True r_foot.color = 'black' r_foot.fill_color = 'red' window.add(r_foot) l_foot = GOval(29, 24, x=241, y=290) l_foot.filled = True l_foot.color = 'black' l_foot.fill_color = 'red' window.add(l_foot) label = GPolygon() label.add_vertex((230, 130)) label.add_vertex((218, 150)) label.add_vertex((242, 150)) label.filled = True label.fill_color = 'firebrick' label.color = 'firebrick' window.add(label)
def draw(mouse): stroke = GOval(SIZE, SIZE, x=mouse.x - SIZE / 2, y=mouse.y - SIZE / 2) stroke.filled = True if mouse.x >= window.width / 2: stroke.color = 'red' stroke.fill_color = 'red' else: stroke.color = 'blue' stroke.fill_color = 'blue' window.add(stroke)
def draw(event): if event.x > window.width // 2: stroke = GOval(SIZE, SIZE) stroke.color = 'black' stroke.filled = True stroke.fill_color = stroke.color else: stroke = GOval(SIZE, SIZE) stroke.color = 'blue' stroke.filled = True stroke.fill_color = stroke.color for i in range(2): window.add(stroke, event.x + SIZE // 2, event.y + SIZE // 2)
def build_karel3(): """ This function builds the third karel """ add = 2 head = GOval(80, 55, x=190 + 120 * add, y=167) head.filled = True head.color = 'black' head.fill_color = 'gray' window.add(head) r_eye = GRect(13, 13, x=212 + 120 * add, y=189) r_eye.filled = True r_eye.color = 'black' r_eye.fill_color = 'blue' window.add(r_eye) l_eye = GRect(13, 13, x=235 + 120 * add, y=189) l_eye.filled = True l_eye.color = 'black' l_eye.fill_color = 'blue' window.add(l_eye) hands = GRect(105, 45, x=177 + 120 * add, y=237) hands.filled = True hands.color = 'black' hands.fill_color = 'lime' window.add(hands) body_1 = GRect(60, 65, x=201 + 120 * add, y=223) body_1.filled = True body_1.color = 'black' body_1.fill_color = 'blue' window.add(body_1) body_2 = GRect(80, 60, x=190 + 120 * add, y=230) body_2.filled = True body_2.color = 'black' body_2.fill_color = 'blue' window.add(body_2) r_foot = GOval(29, 24, x=190 + 120 * add, y=290) r_foot.filled = True r_foot.color = 'black' r_foot.fill_color = 'red' window.add(r_foot) l_foot = GOval(29, 24, x=241 + 120 * add, y=290) l_foot.filled = True l_foot.color = 'black' l_foot.fill_color = 'red' window.add(l_foot) label = GOval(22, 22, x=218+120*add, y=130) label.filled = True label.fill_color = 'goldenrod' label.color = 'goldenrod' window.add(label)
def add_rainbow(window): """This function add a rainbow to the window""" # initial setting for the rainbow size_ini_cir = 600 x_cir = WINDOW_WIDTH * 0.5 y_cir = WINDOW_HEIGHT * 0.85 int_cir = 50 # plot the concentric circles for i in range(len(RAINBOW_COLOR_LIST)): size_cir = size_ini_cir - int_cir * i circle = GOval(size_cir, size_cir, x=x_cir - size_cir / 2, y=y_cir - size_cir / 2) circle.filled = True circle.color = RAINBOW_COLOR_LIST[i] circle.fill_color = RAINBOW_COLOR_LIST[i] window.add(circle) # block the lower part of the circles by overlaying a box rect = GRect(size_ini_cir, size_ini_cir / 2, x=x_cir - size_ini_cir / 2, y=y_cir) rect.filled = True rect.color = RAINBOW_COLOR_LIST[-1] rect.fill_color = RAINBOW_COLOR_LIST[-1] window.add(rect)
def build_blocks(): """ This function builds the blocks of the drawing """ block_1 = GRect(375, 80, x=20, y=330) block_1.filled = True block_1.color = 'firebrick' block_1.fill_color = 'firebrick' window.add(block_1) block_2 = GRect(375, 80, x=405, y=330) block_2.filled = True block_2.color = 'steelblue' block_2.fill_color = 'steelblue' window.add(block_2) block_3 = GRect(375, 80, x=20, y=420) block_3.filled = True block_3.color = 'goldenrod' block_3.fill_color = 'goldenrod' window.add(block_3) block_4 = GRect(375, 80, x=405, y=420) block_4.filled = True block_4.color = 'forestgreen' block_4.fill_color = 'forestgreen' window.add(block_4) block_5 = GRect(60, 40, x=720, y=120) block_5.filled = True block_5.color = 'dodgerblue' block_5.fill_color = 'dodgerblue' window.add(block_5) circle_1 = GOval(90, 90, x=20, y=170) circle_1.filled = True circle_1.color = 'blueviolet' circle_1.fill_color = 'blueviolet' window.add(circle_1)
def fire_work(self): """ This method creates a firework animation. """ # Numbers of the firework for i in range(10): f_x = random.randint(self.window.width // 8, self.window.width * 7 // 8) f_y = random.randint(self.window.height // 10, self.window.height * 9 // 10) size = random.randint(4, 7) # The size of the firework for j in range(size): fire = GOval(10 + 20 * j, 10 + 20 * j, x=f_x - 10 * j, y=f_y - 10 * j) # Choose color randomly fire.color = self.choose_color() self.window.add(fire) pause(100) self.window.remove(fire) pause(500)
def eiffel_tower_bottom(): """ This function will draw the eiffel tower's bottom on the canvas. """ bottom = GRect(398, 100, x=401, y=705) bottom.filled = True bottom.fill_color = 'gray' bottom.color = 'gray' window.add(bottom) for i in range(20): rect = GRect(90-(i*5), 10, x=401, y=700+i*5) rect.filled=True rect.fill_color = 'white' rect.color = 'white' window.add(rect) for i in range(20): rect = GRect(90-(i*5), 10, x=709+i*5, y=700+i*5) rect.filled = True rect.fill_color = 'white' rect.color = 'white' window.add(rect) arch = GOval(150, 150, x=523, y=730) arch.filled = True arch.fill_color = 'white' arch.color = 'white' window.add(arch)
def breed(self): """ This method create three circle and one rectangle to compose a cloud shape. Every time the cloud shape will be displayed in random position of window. """ dx = random.randint(10, window.width - 10) dy = random.randint(10, window.height - 10) rect = GRect(70, 30) rect.color = 'mintcream' rect.filled = True rect.fill_color = 'mintcream' self.list.append(rect) for i in range(3): circle = GOval(60, 60) circle.color = 'mintcream' circle.filled = True circle.fill_color = 'mintcream' self.list.append(circle) window.add(self.list[0], window.width + 45 + dx, 55 + dy) window.add(self.list[1], window.width + 10 + dx, 25 + dy) window.add(self.list[2], window.width + 45 + dx, 0 + dy) window.add(self.list[3], window.width + 80 + dx, 25 + dy)
def arch_triomphe_body(): """ This function will draw the body part of the Arch de Triomphe. """ body = GRect(280,280, x=860, y=520) body.filled = True body.fill_color = 'white' body.color = 'white' window.add(body) arch = GOval(170,290,x=915,y=610) arch.filled = True arch.fill_color = 'red' arch.color = 'red' window.add(arch) middle_line = GRect(280, 15, x=860, y=660) middle_line.filled = True middle_line.fill_color = 'red' middle_line.color = 'red' window.add(middle_line) upper_line = GRect(280, 15, x=860, y=600) upper_line.filled = True upper_line.fill_color = 'red' upper_line.color = 'red' window.add(upper_line) top_line = GRect(280, 20, x=860, y=550) top_line.filled = True top_line.fill_color = 'red' top_line.color = 'red' window.add(top_line)
def activate(event): if mouse_lock == 0: ball_bouncing() else: nothing = GOval(5, 5) nothing.color = 'white' window.add(nothing, event.x, event.y)
def button(dx=0, dy=0): """ Function: draw button Principle: use ellipse subtraction to create curved shape :param dx: x-axis displacement :param dy: y-axis displacement """ l_button = GOval(100, 40, x=dx + 40, y=dy + 175) l_button.filled = True l_button.color = 'gray' l_button.fill_color = 'gray' window.add(l_button) u_button = GOval(100, 40, x=dx + 40, y=dy + 168) u_button.filled = True u_button.color = 'red' u_button.fill_color = 'red' window.add(u_button)
def arch_triomphe_deco(): """ This function will add the deco part on the Arch de Triomphe. """ # middle circle part middle_circle = GOval(60, 60, x=970, y=580) middle_circle.filled = True middle_circle.fill_color = 'white' middle_circle.color = 'white' window.add(middle_circle) middle_circle_inside = GOval(40, 40, x=980, y=590) middle_circle_inside.filled = True middle_circle_inside.fill_color = 'red' middle_circle_inside.color = 'red' window.add(middle_circle_inside) # dots on the roof for i in range(9): small_dot = GOval(15,15, x=875+(i*30), y=528) small_dot.filled = True small_dot.fill_color = 'red' small_dot.color = 'red' window.add(small_dot) # small squares on the pillar for i in range(2): small_square = GRect(20, 20, x=890+(i*200), y=630) small_square.filled = True small_square.fill_color = 'red' small_square.color = 'red' window.add(small_square) # ovals on the pillar for i in range(2): small_oval = GOval(20,50, x=875+(i*230), y=690) small_oval.filled = True small_oval.fill_color = 'red' small_oval.color = 'red' window.add(small_oval) # lines on the pillar for i in range(2): small_line = GRect(30, 5, x=870 + (i * 230), y=750) small_line.filled = True small_line.fill_color = 'red' small_line.color = 'red' window.add(small_line)
def draw_circle(r, g, b, x, y): """ draw a circle and add to window on given (x, y), painting with given color. """ circle = GOval(PIXEL_SIZE, PIXEL_SIZE) circle.filled = True circle.fill_color = (r, g, b) circle.color = (r, g, b) window.add(circle, x, y) update_x_y_boundary(x, y)
def smile(dx=0, dy=0, main_color='greenyellow'): """ Function: draw smile Principle: use ellipse subtraction to create curved shape :param dx: x-axis displacement :param dy: y-axis displacement :param main_color: main color """ smile_line = GOval(220, 70, x=dx + 200, y=dy + 230) smile_line.filled = True smile_line.color = 'black' smile_line.fill_color = 'black' window.add(smile_line) smile_x = GOval(220, 67, x=dx + 200, y=dy + 230) smile_x.filled = True smile_x.color = main_color smile_x.fill_color = main_color window.add(smile_x)
def top(dx=0, dy=0, main_color='greenyellow'): """ Function: draw top Principle: use ellipse subtraction to create curved shape :param dx: x-axis displacement :param dy: y-axis displacement :param main_color: main color """ pillar = GOval(30, 200, x=dx + 295, y=dy + 50) pillar.filled = True pillar.color = main_color pillar.fill_color = main_color window.add(pillar) ball = GOval(40, 40, x=dx + 290, y=dy + 40) ball.filled = True ball.color = main_color ball.fill_color = main_color window.add(ball)
def tie_fighter_hull(self): size = self.brick_smaller() hull = GOval(size * 6, size * 6) hull.filled = True hull.fill_color = "grey" hull.color = "grey" self.window.add(hull, x=self.window_width / 2 - hull.width / 2, y=self.window_height / 2 - hull.height / 2 - 400) return hull
def build_a_ball(): """ This function creates a ball with GOval :return: object, ball """ ball = GOval(SIZE, SIZE, x=START_X, y=START_Y) ball.filled = True ball.fill_color = 'lightpink' ball.color = 'lightpink' return ball
def ryan(): r_face = GOval(200, 175) window.add(r_face, x=100, y=150) r_face.color = 'peru' r_face.fill_color = 'peru' r_l_ear = GOval(50, 55) window.add(r_l_ear, x=93, y=165) r_l_ear.color = 'peru' r_l_ear.fill_color = 'peru' r_r_ear = GOval(50, 55) window.add(r_r_ear, x=253, y=165) r_r_ear.color = 'peru' r_r_ear.fill_color = 'peru' r_l_brow = GRect(35, 5) window.add(r_l_brow, x=140, y=210) r_l_brow.filled = 1 r_r_brow = GRect(35, 5) window.add(r_r_brow, x=225, y=210) r_r_brow.filled = 1 r_l_eye = GOval(12, 12) window.add(r_l_eye, x=150, y=230) r_l_eye.filled = 1 r_r_eye = GOval(12, 12) window.add(r_r_eye, x=235, y=230) r_r_eye.filled = 1 r_nose1 = GOval(35, 30) r_nose1.color = 'ivory' r_nose1.filled = True r_nose1.fill_color = 'ivory' window.add(r_nose1, x=173, y=250) r_nose2 = GOval(35, 30) r_nose2.color = 'ivory' r_nose2.filled = True r_nose2.fill_color = 'ivory' window.add(r_nose2, x=197, y=250) r_nose3 = GOval(20, 15) r_nose3.filled = True window.add(r_nose3, x=193, y=245) ryan_name = GLabel('RYAN') ryan_name.font = 'Verdana-30-bold' window.add(ryan_name, x=155, y=380)
def tie_fighter_hull_window2(self): size = self.brick_smaller() hull_window2 = GOval(size * 2, size * 2) hull_window2.filled = True hull_window2.color = "wheat" self.window.add(hull_window2, x=self.window_width / 2 - hull_window2.width / 2, y=self.window_height / 2 - hull_window2.height / 2 - 400) return hull_window2
def ball(self): # Center a filled ball in the graphical window. b = GOval(self.ball_radius * 2, self.ball_radius * 2) # draw the ball b.filled = True b.fill_color = "blue" b.color = "blue" self.window.add(b, x=self.window_width / 2 - self.ball_radius, y=self.window_height / 2 - self.ball_radius) return b
def hole_puncher(event): global count, x, y, hole count += 1 if count % 2 == 1: hole = GOval(SIZE, SIZE, x=event.x - SIZE/2, y=event.y - SIZE/2) hole.color = 'black' window.add(hole) else: line = GLine(hole.x, hole.y, event.x, event.y) window.add(line) window.remove(hole)
def rescue_light(): #color database light_color = ["dimgrey", "lightgrey", "gainsboro", "whitesmoke"] light_beam = GPolygon() light_beam.color = "darkgrey" polygon_helper(light_beam, "darkgrey", (920, 350), (1300, 650), (1255, 250)) bat_icon_background = GOval(385, 300, x = 870, y = 100) bat_icon_background.color = "darkgrey" obj_fill_color_add(bat_icon_background, "darkgrey") # gradually brighten the beam pause(1000) for s in light_color: light_beam.color = s light_beam.fill_color = s bat_icon_background.color = s bat_icon_background.fill_color = s pause(800) #batman icon in light bat_icon = GImage("batman.jpeg") window.add(bat_icon, bat_icon_background.x + 60, bat_icon_background.y + 45)
def up(window): """ :param window: window """ head = GOval(200, 200) head.filled = True window.add(head, x=window.width / 2 - head.width / 2, y=window.height / 2 - head.height / 2) ear1 = GOval(100, 100) ear1.filled = True window.add(ear1, x=head.x - ear1.width / 2, y=head.y - ear1.height / 2) ear2 = GOval(100, 100) ear2.filled = True window.add(ear2, x=head.x + (head.width - ear2.width / 2), y=head.y - ear2.height / 2) heads1 = GOval(head.width // 2.5, head.height - 80, x=window.width / 2 - 70, y=window.height / 2 - 70) heads1.filled = True window.add(heads1) heads1.fill_color = 'Moccasin' heads2 = GOval(head.width // 2.5, head.height - 80, x=window.width / 2 - 10, y=window.height / 2 - 70) heads2.filled = True heads2.color = 'Moccasin' window.add(heads2) heads2.fill_color = 'Moccasin' mouth = GOval(head.width - 20, 70, x=window.width / 2 - 90, y=window.height / 2 + 10) mouth.filled = True window.add(mouth) mouth.color = 'Moccasin' mouth.fill_color = 'Moccasin'