辉宇星空 专业文章 python海龟绘图(绘制冬奥会吉祥物-冰礅礅)

python海龟绘图(绘制冬奥会吉祥物-冰礅礅)

Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标…

Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。
   

  • 海龟绘图法常用函数:
  • 要使用海龟绘图,需要调用turtle库,语法import turtle,引入绘图库
  • 设置窗体标题  title(“冰礅礅”)
  • 设置窗体大小和位置 setup(1200, 800, 200, 200)
  • 设置海龟绘图速度 speed(3)
  • 切换RGB色彩模式 255:整数模式  colormode(255)
  • 抬笔 penup()
  • 移到坐标处 goto()
  • 落笔 pendown() 
  • 设置画笔颜色 pencolor(“brown”)
  • 设置画笔宽度 pensize()
  • 前进:forward(n)
  • 左转弯:left(n)
  • 右转弯:right(n)
  • 直接写:write(n)
  • 窗体暂停:done()

使用海龟画图绘制冰礅礅代码:

import turtle as hytt

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

    # 左手内
    tt.penup()
    tt.goto(182, 95)
    tt.pencolor("black")
    tt.pensize(1)
    tt.fillcolor("black")
    tt.begin_fill()
    tt.setheading(95)
    tt.pendown()
    tt.circle(-37, 160)
    tt.circle(-20, 50)
    tt.circle(-200, 30)
    tt.end_fill()
    # 轮廓
    # 头顶
    tt.penup()
    tt.goto(-73, 230)
    tt.pencolor("lightgray")
    tt.pensize(3)
    tt.fillcolor("white")
    tt.begin_fill()
    tt.pendown()
    tt.setheading(20)
    tt.circle(-250, 35)
    # 左耳
    tt.setheading(50)
    tt.circle(-42, 180)
    # 左侧
    tt.setheading(-50)
    tt.circle(-190, 30)
    tt.circle(-320, 45)
    # 左腿
    tt.circle(120, 30)
    tt.circle(200, 12)
    tt.circle(-18, 85)
    tt.circle(-180, 23)
    tt.circle(-20, 110)
    tt.circle(15, 115)
    tt.circle(100, 12)
    # 右腿
    tt.circle(15, 120)
    tt.circle(-15, 110)
    tt.circle(-150, 30)
    tt.circle(-15, 70)
    tt.circle(-150, 10)
    tt.circle(200, 35)
    tt.circle(-150, 20)
    # 右手
    tt.setheading(-120)
    tt.circle(50, 30)
    tt.circle(-35, 200)
    tt.circle(-300, 23)
    # 右侧
    tt.setheading(86)
    tt.circle(-300, 26)
    # 右耳
    tt.setheading(122)
    tt.circle(-53, 160)
    tt.end_fill()

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

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

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

    # 左腿内
    tt.penup()
    tt.goto(108, -168)
    tt.fillcolor("black")
    tt.begin_fill()
    tt.pendown()
    tt.setheading(-115)
    tt.circle(110, 15)
    tt.circle(200, 10)
    tt.circle(-18, 80)
    tt.circle(-180, 13)
    tt.circle(-20, 90)
    tt.circle(15, 60)
    tt.setheading(42)
    tt.circle(-200, 29)
    tt.end_fill()
    # 右腿内
    tt.penup()
    tt.goto(-38, -210)
    tt.fillcolor("black")
    tt.begin_fill()
    tt.pendown()
    tt.setheading(-155)
    tt.circle(15, 100)
    tt.circle(-10, 110)
    tt.circle(-100, 30)
    tt.circle(-15, 65)
    tt.circle(-100, 10)
    tt.circle(200, 15)
    tt.setheading(-14)
    tt.circle(-200, 27)
    tt.end_fill()

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

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

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

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

    # 彩虹圈
    tt.penup()
    tt.goto(-135, 120)
    tt.pensize(5)
    tt.pencolor("cyan")
    tt.pendown()
    tt.setheading(60)
    tt.circle(-165, 150)
    tt.circle(-130, 78)
    tt.circle(-250, 30)
    tt.circle(-138, 105)
    tt.penup()
    tt.goto(-131, 116)
    tt.pencolor("slateblue")
    tt.pendown()
    tt.setheading(60)
    tt.circle(-160, 144)
    tt.circle(-120, 78)
    tt.circle(-242, 30)
    tt.circle(-135, 105)
    tt.penup()
    tt.goto(-127, 112)
    tt.pencolor("orangered")
    tt.pendown()
    tt.setheading(60)
    tt.circle(-155, 136)
    tt.circle(-116, 86)
    tt.circle(-220, 30)
    tt.circle(-134, 103)
    tt.penup()
    tt.goto(-123, 108)
    tt.pencolor("gold")
    tt.pendown()
    tt.setheading(60)
    tt.circle(-150, 136)
    tt.circle(-104, 86)
    tt.circle(-220, 30)
    tt.circle(-126, 102)
    tt.penup()
    tt.goto(-120, 104)
    tt.pencolor("greenyellow")
    tt.pendown()
    tt.setheading(60)
    tt.circle(-145, 136)
    tt.circle(-90, 83)
    tt.circle(-220, 30)
    tt.circle(-120, 100)
    tt.penup()

    # 爱心
    tt.penup()
    tt.goto(220, 115)
    tt.pencolor("brown")
    tt.pensize(1)
    tt.fillcolor("brown")
    tt.begin_fill()
    tt.pendown()
    tt.setheading(36)
    tt.circle(-8, 180)
    tt.circle(-60, 24)
    tt.setheading(110)
    tt.circle(-60, 24)
    tt.circle(-8, 180)
    tt.end_fill()

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

    tt.pencolor("black")
    tt.goto(-16, -160)
    tt.write("BEIJING 2022", font=('Arial', 10, 'bold italic'))
    
    #抬笔
    tt.penup()
    
def main():
    #设置窗体标题
    hytt.title("冰礅礅")
    #设置窗体大小和位置
    hytt.setup(1200, 800, 200, 200)
    #设置海龟绘图速度
    hytt.speed(3)  #"fastest": 0 最快 "fast": 10 快
    #隐藏海龟剪头
    hytt.hideturtle()
    #抬笔
    hytt.penup()
    #切换RGB色彩模式 255:整数模式切换RGB色彩模式
    hytt.colormode(255)
    
    #测试程序
    ttDraw(hytt)
    
    hytt.done()

if __name__ == "__main__":
    main()

代码运行录像:

在VScode中运行冰礅礅代码录像

本文来自网络,不代表辉宇星空立场,转载请注明出处:https://hy68.top/index.php/2022/03/06/764/

作者: huiyu68

广告位

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

联系我们

18938113345

在线咨询: QQ交谈

邮箱: liwenhui_163@163.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部