用Python自己画一个冰墩墩

2022-02-12 11:40:30 Python 阅读 (1959) 评论(0)

    最近冬奥会的吉祥物冰墩墩行情真的是非常火爆,都已经限购了。既然难以得到,就用 Python 给自己画一个冰墩墩吧。主要使用Python的turtle绘图模块,代码技术含量不高,不断调整各种细节即可。

    talk is cheap , show me the code!  代码同样也已经推到我的gitee里了。

from turtle import *
from datetime import datetime

# 左手
def left_hand():
    penup()
    goto(177, 112)
    pencolor("lightgray")
    pensize(3)
    fillcolor("white")
    begin_fill()
    pendown()
    setheading(80)
    circle(-45, 200)
    circle(-300, 23)
    end_fill()

# 左手内
def left_hand_inside():
    penup()
    goto(182, 95)
    pencolor("black")
    pensize(1)
    fillcolor("black")
    begin_fill()
    setheading(95)
    pendown()
    circle(-37, 160)
    circle(-20, 50)
    circle(-200, 30)
    end_fill()

# 头顶
def head():
    penup()
    goto(-73, 230)
    pencolor("lightgray")
    pensize(3)
    fillcolor("white")
    begin_fill()
    pendown()
    setheading(20)
    circle(-250, 35)

# 左耳
def left_ear():
    setheading(50)
    circle(-42, 180)

# 左侧
def left_body():
    setheading(-50)
    circle(-190, 30)
    circle(-320, 45)

# 左腿
def left_leg():
    circle(120, 30)
    circle(200, 12)
    circle(-18, 85)
    circle(-180, 23)
    circle(-20, 110)
    circle(15, 115)
    circle(100, 12)

# 右腿
def right_leg():
    circle(15, 120)
    circle(-15, 110)
    circle(-150, 30)
    circle(-15, 70)
    circle(-150, 10)
    circle(200, 35)
    circle(-150, 20)

# 右手
def right_hand():
    setheading(-120)
    circle(50, 30)
    circle(-35, 200)
    circle(-300, 23)

# 右侧
def right_body():
    setheading(86)
    circle(-300, 26)

# 右耳
def right_ear():
    setheading(122)
    circle(-53, 160)
    end_fill()

# 右耳内
def right_ear_inside():
    penup()
    goto(-130, 180)
    pencolor("black")
    pensize(1)
    fillcolor("black")
    begin_fill()
    pendown()
    setheading(120)
    circle(-28, 160)
    setheading(210)
    circle(150, 20)
    end_fill()

# 左耳内
def left_ear_inside():
    penup()
    goto(90, 230)
    setheading(40)
    begin_fill()
    pendown()
    circle(-30, 170)
    setheading(125)
    circle(150, 23)
    end_fill()

# 右手内
def right_hand_inside():
    penup()
    goto(-180, -55)
    fillcolor("black")
    begin_fill()
    setheading(-120)
    pendown()
    circle(50, 30)
    circle(-27, 200)
    circle(-300, 20)
    setheading(-90)
    circle(300, 14)
    end_fill()

# 左腿内
def left_leg_inside():
    penup()
    goto(108, -168)
    fillcolor("black")
    begin_fill()
    pendown()
    setheading(-115)
    circle(110, 15)
    circle(200, 10)
    circle(-18, 80)
    circle(-180, 13)
    circle(-20, 90)
    circle(15, 60)
    setheading(42)
    circle(-200, 29)
    end_fill()

# 右腿内
def right_leg_inside():
    penup()
    goto(-38, -210)
    fillcolor("black")
    begin_fill()
    pendown()
    setheading(-155)
    circle(15, 100)
    circle(-10, 110)
    circle(-100, 30)
    circle(-15, 65)
    circle(-100, 10)
    circle(200, 15)
    setheading(-14)
    circle(-200, 27)
    end_fill()

# 右眼
def right_eye():
    # 眼圈
    penup()
    goto(-64, 120)
    begin_fill()
    pendown()
    setheading(40)
    circle(-35, 152)
    circle(-100, 50)
    circle(-35, 130)
    circle(-100, 50)
    end_fill()
    # 眼珠
    penup()
    goto(-47, 55)
    fillcolor("white")
    begin_fill()
    pendown()
    setheading(0)
    circle(25, 360)
    end_fill()
    penup()
    goto(-45, 62)
    pencolor("darkslategray")
    fillcolor("darkslategray")
    begin_fill()
    pendown()
    setheading(0)
    circle(19, 360)
    end_fill()
    penup()
    goto(-45, 68)
    fillcolor("black")
    begin_fill()
    pendown()
    setheading(0)
    circle(10, 360)
    end_fill()
    penup()
    goto(-47, 86)
    pencolor("white")
    fillcolor("white")
    begin_fill()
    pendown()
    setheading(0)
    circle(5, 360)
    end_fill()

# 左眼
def left_eye():
    # 眼圈
    penup()
    goto(51, 82)
    fillcolor("black")
    begin_fill()
    pendown()
    setheading(120)
    circle(-32, 152)
    circle(-100, 55)
    circle(-25, 120)
    circle(-120, 45)
    end_fill()
    # 眼珠
    penup()
    goto(79, 60)
    fillcolor("white")
    begin_fill()
    pendown()
    setheading(0)
    circle(24, 360)
    end_fill()
    penup()
    goto(79, 64)
    pencolor("darkslategray")
    fillcolor("darkslategray")
    begin_fill()
    pendown()
    setheading(0)
    circle(19, 360)
    end_fill()
    penup()
    goto(79, 70)
    fillcolor("black")
    begin_fill()
    pendown()
    setheading(0)
    circle(10, 360)
    end_fill()
    penup()
    goto(79, 88)
    pencolor("white")
    fillcolor("white")
    begin_fill()
    pendown()
    setheading(0)
    circle(5, 360)
    end_fill()

# 鼻子    
def nose():
    penup()
    goto(37, 80)
    fillcolor("black")
    begin_fill()
    pendown()
    circle(-8, 130)
    circle(-22, 100)
    circle(-8, 130)
    end_fill()

# 嘴
def mouth():  
    penup()
    goto(-15, 48)
    setheading(-36)
    begin_fill()
    pendown()
    circle(60, 70)
    setheading(-132)
    circle(-45, 100)
    end_fill()

# 彩虹圈
def rainbow():
    penup()
    goto(-135, 120)
    pensize(5)
    pencolor("cyan")
    pendown()
    setheading(60)
    circle(-165, 150)
    circle(-130, 78)
    circle(-250, 30)
    circle(-138, 105)
    penup()
    goto(-131, 116)
    pencolor("slateblue")
    pendown()
    setheading(60)
    circle(-160, 144)
    circle(-120, 78)
    circle(-242, 30)
    circle(-135, 105)
    penup()
    goto(-127, 112)
    pencolor("orangered")
    pendown()
    setheading(60)
    circle(-155, 136)
    circle(-116, 86)
    circle(-220, 30)
    circle(-134, 103)
    penup()
    goto(-123, 108)
    pencolor("gold")
    pendown()
    setheading(60)
    circle(-150, 136)
    circle(-104, 86)
    circle(-220, 30)
    circle(-126, 102)
    penup()
    goto(-120, 104)
    pencolor("greenyellow")
    pendown()
    setheading(60)
    circle(-145, 136)
    circle(-90, 83)
    circle(-220, 30)
    circle(-120, 100)
    penup()
   
# 爱心
def love_heart():
    penup()
    goto(220, 115)
    pencolor("brown")
    pensize(1)
    fillcolor("brown")
    begin_fill()
    pendown()
    setheading(36)
    circle(-8, 180)
    circle(-60, 24)
    setheading(110)
    circle(-60, 24)
    circle(-8, 180)
    end_fill()

# 五环
def wuhuan():  
    penup()
    goto(-5, -170)
    pendown()
    pencolor("blue")
    circle(6)
    penup()
    goto(10, -170)
    pendown()
    pencolor("black")
    circle(6)
    penup()
    goto(25, -170)
    pendown()
    pencolor("brown")
    circle(6)
    penup()
    goto(2, -175)
    pendown()
    pencolor("lightgoldenrod")
    circle(6)
    penup()
    goto(16, -175)
    pendown()
    pencolor("green")
    circle(6)
    penup()

# 北京2022文字
def write_beibing():
    pencolor("black")
    goto(-26, -160)
    pendown()
    write("BEIJING 2022", font=('Arial', 10, 'bold italic'))
    penup()


def write_author():
    pencolor("black")
    goto(250, -323)
    pendown()
    write("draw by 关机闹钟", font=('Arial', 20, 'normal'))
    penup()
    goto(250, -353)
    pendown()
    write(datetime.now().strftime("%Y-%m-%d %H:%M:%S"), font=('Arial', 20, 'normal'))
    penup()


# 画布,画笔设置
def init():
    speed(20)
    hideturtle()

def main():
    init()
    left_hand()
    left_hand_inside()
    head()
    left_ear()
    left_body()
    left_leg()
    right_leg()
    right_hand()
    right_body()
    right_ear()
    right_ear_inside()
    left_ear_inside()
    right_hand_inside()
    left_leg_inside()
    right_leg_inside()
    right_eye()
    left_eye()
    nose()
    mouth()
    rainbow()
    love_heart()
    wuhuan()
    write_beibing()
    write_author()
    done()

if __name__ == '__main__':
    main()


 

    

评论