1.源代码
# coding=utf-8 from turtle import * import time COLOR = '#B2814D' def set_start(x, y, w, c=COLOR): penup() setx(x) sety(y) setheading(towards(0, 0)) width(w) pencolor(c) pendown() speed(0) def left_rotate(time, angle, length): for i in range(time): left(angle) forward(length) def right_rotate(time, angle, length): for i in range(time): right(angle) forward(length) def draw_circle(radius, color, color2=''): if color2 == '': color2 = color penup() setheading(towards(0, 0)) right(90) pencolor(color) pendown() begin_fill() circle(radius) fillcolor(color2) end_fill() def fill_color(color): def decorator_all(func): def wrapper(*args, **kwargs): begin_fill() func(*args, **kwargs) fillcolor(color) end_fill() return wrapper return decorator_all def fill_color_patch(x, y, c='#fffffb'): set_start(x, y, 1, c=c) forward(1) def head_outline(): set_start(0, -40, 2.5) right(90) left_rotate(5, 3, 14) left_rotate(5, 8, 8) left_rotate(10, 5, 6.5) left_rotate(5, 5.5, 10) left_rotate(25, 4, 10) left_rotate(6, 5.5, 5) left_rotate(7, 3, 7) left_rotate(5, 10, 8) left_rotate(5, 3, 14) @fill_color('#fdb933') def draw_head(): head_outline() pencolor('#CDCDCD') goto(0, -40) @fill_color('#fffffb') def draw_face(): set_start(0, -40, 2.5) right(90) left_rotate(5, 3, 14) left_rotate(1, 80, 2.5) pencolor('#fffffb') left_rotate(12, 5, 6.5) left_rotate(5, 6, 15) left_rotate(5, 5, 10) left_rotate(5, 12, 10) backward(0.5) left(65) pencolor(COLOR) backward(3) left_rotate(5, 3, 14) forward(5) def draw_moustache(): fill_color_patch(-41, -31) begin_fill() set_start(-41, -31, 2.5) right(180) left_rotate(4, 20, 4) left_rotate(1, 90, 8) right(150) left_rotate(4, 25, 3) forward(6) left_rotate(1, 110, 5.5) right(165) left_rotate(4, 15, 3.2) left(150) right_rotate(3, 30, 2.2) right_rotate(1, 105, 5) left(130) right_rotate(6, 5, 1.8) right_rotate(1, 130, 2) left(60) left_rotate(2, 30, 1) left_rotate(4, 28, 4) fillcolor('#fffffb') end_fill() set_start(-45, -28, 2.5) right(70) left_rotate(5, 2.5, 4) left_rotate(4, 9, 3) left_rotate(5, 3, 4.5) def draw_mouth(): set_start(-17, 22, 2.5) right_rotate(1, 45, 14) left_rotate(1, 85, 35) left_rotate(1, 70, 7) set_start(-17, 22, 2.5) right_rotate(1, 45, 14) right_rotate(1, 78, 36) right_rotate(1, 65, 6) set_start(-17, 22, 2.5) right_rotate(1, 45, 14) left_rotate(1, 85, 30) right_rotate(1, 108, 12) right_rotate(1, 140, 5) set_start(-17, 22, 2.5) right_rotate(1, 45, 14) right_rotate(1, 75, 28) left_rotate(1, 85, 10) left_rotate(1, 130, 8) set_start(3, 0, 2.5) left(90) right_rotate(5, 5, 4.8) right_rotate(4, 18, 1.8) left_rotate(1, 3, 27) right_rotate(4, 18, 1) right_rotate(1, 15, 22) right(88) right_rotate(9, 1, 4.5) begin_fill() set_start(3, 0, 2.5) left(90) right_rotate(4, 5, 4.8) right_rotate(1, 5, 2) right_rotate(1, 67, 37) right_rotate(1, 86, 18) fillcolor('#f15a22') end_fill() begin_fill() set_start(3, 0, 2.5) pencolor('#aa2116') left(90) right_rotate(2, 5, 6) right(120) left_rotate(10, 6, 2) right(55) left_rotate(11, 5.5, 1.8) right_rotate(1, 110, 10) right(100) right_rotate(9, 1, 4.5) fillcolor('#aa2116') end_fill() set_start(3, 0, 2.5) left(90) right_rotate(5, 5, 4.8) right_rotate(4, 18, 1.8) left_rotate(1, 3, 27) right_rotate(4, 18, 1) right_rotate(1, 15, 22) right(88) right_rotate(9, 1, 4.5) set_start(21, 10, 1, c='#fdb933') draw_circle(2.3, '#fdb933') set_start(10, 16, 1, c='#fdb933') draw_circle(2.3, '#fdb933') set_start(21, 19, 1, c='#fdb933') draw_circle(2.3, '#fdb933') set_start(-57, 16, 1, c='#fdb933') draw_circle(2.3, '#fdb933') set_start(-51, 24, 1, c='#fdb933') draw_circle(2.3, '#fdb933') set_start(-64, 24, 1, c='#fdb933') draw_circle(2.3, '#fdb933') def draw_nose(): set_start(6, 37, 1) pencolor('#e0861a') right(150) begin_fill() left_rotate(6, 3, 4) left_rotate(6, 15, 3) left_rotate(6, 3, 4) fillcolor('#e0861a') end_fill() set_start(6, 37, 1.5) right(120) begin_fill() left_rotate(5, 4, 4) left_rotate(3, 10, 3) left_rotate(5, 4, 4) left_rotate(7, 15, 0.8) left_rotate(5, 4, 4) left_rotate(5, 8, 2) left_rotate(5, 4, 4) left_rotate(7, 15, 0.8) fillcolor('#b4532a') end_fill() set_start(-16, 36, 1) pencolor('#d1923f') right(75) begin_fill() right_rotate(4, 15, 2) right_rotate(5, 26, 1) rig
01-23
11-28
6152
