zoukankan      html  css  js  c++  java
  • Turtle库的学习积累

    1.什么是turtle库

    Python的Turtle库是一个直观有趣的图形绘制函数库,Turtle英文翻译过来是乌龟的意思,在绘图时可以想象成一只乌龟在移动。

    2.绘图坐标体系

        海龟的移动方向

     

    3.绘制图像函数

    3.1 画布:画布是用于绘图的区域,可控制其界面大小。

    setup ( width , height , startx , starty )

    width : 窗口宽度,值为整数则对应像素值;值为小数则为窗口宽度与屏幕的比例。

    height : 窗口高度,值为整数则对应像素值;值为小数则为窗口高度与屏幕的比例。

    startx : 窗口左侧与屏幕左侧的像素距离,值为None则窗口位于窗口水平中央。

    starty : 窗口右侧与屏幕右侧的像素距离,值为None则窗口位于窗口垂直中央。


     3.2画笔:

    (1)turtle.penup() 别名:turtle.pu()或者turtle.up()    作用:抬起画笔,之后移动画笔不绘制形状

    (2)turtle.pendown() 别名:turtle,pd()或者turtle.down()   作用:落下画笔,之后移动画笔绘制形状

    (3)turtle.pensize()   作用:设置画笔尺寸    例如:turtle.pensize(width) 别名:turtle.width() 作用:设置画笔宽度,当无参数输入时返回当前画笔宽度

    (4)turtle.pencolor()  作用:设置画笔颜色

    RGB色彩体系

     rgb的色彩取值范围为0-255的整数或者0-1的小数

      

      

    切换RBG模式

    turtle.colormode(mode)

      1.0:RGB小数模式

      255:RGB整数模式

    3.3.形状绘制函数

    turtle.fd(distance) / forward(distance) 作用:向小乌龟前进的方向前进distance距离,distance 为前进距离的像素值

    turtle.bk(distance) / backward(distance)  作用:向小乌龟前进的方向后退distance距离,distance 为后退距离的像素值

    turtle.lt(angle) / left(angle) 作用:左转,angle 为左转的角度

    turtle.rt(angle) / right(angle) 作用:angle 为右转的角度

    turtle.seth(angle) / setheading(angle)  作用:angle 为转到的角度,即改变绘图的方向

    turtle.circle(radius [,extent])  作用:绘制以radius为半径、以angle为角度弧形

      (extent 为None时,绘制整个圆;radius 为正数时,绘制的图形在小海龟左侧;radius 为负数时,绘制的图形在小海龟右侧)

    turtle.ht() / hideturtle()  作用:隐藏小海龟

    turtle.st() / showturtle()  作用:显示小海龟

    turtle.fillcolor(colorstring)  作用:填充颜色

    turtle.begin_fill()  作用:开始填充图形

    turtle.end_fill()  作用:填充完成

    3.4 控制命令

    命令

    说明

    home()

    使小海龟回到初始位置 (0,0)

    clear()

    清空窗口,但小海龟的位置和状态不变

    reset()

    清空窗口,且重置小海龟的状态为初始状态

    undo()

    撤销上一个动作

    stamp()

    复制当前图形

    write(s [,font=(“font_name”,font_size,”font_type”)])

    文本,s 为文本内容,font 是字体的参数,内部分别是字体名称,大小和类型

     

    4.绘制图像实例

    (1)玫瑰花绘制

     

    import turtle as t               # 定义一个曲线绘制函数(用t来代替turtle)
    def DegreeCurve(n, r, d=1):
    for i in range(n):
    t.left(d)
    t.circle(r, abs(d))                # 初始位置设定
    s = 0.2 # 尺寸
    t.setup(450*5*s, 750*5*s)            #设置窗口大小
    t.pencolor("black")              #画笔颜色
    t.fillcolor("red")                 #填充颜色
    t.speed(100)                 #加速
    t.penup()                    #下笔
    t.goto(0, 900*s)
    t.pendown()                  # 绘制花朵形状
    t.begin_fill()                    #开始
    t.circle(200*s,30)
    DegreeCurve(60, 50*s)
    t.circle(200*s,30)
    DegreeCurve(4, 100*s)
    t.circle(200*s,50)
    DegreeCurve(50, 50*s)
    t.circle(350*s,65)
    DegreeCurve(40, 70*s)
    t.circle(150*s,50)
    DegreeCurve(20, 50*s, -1)
    t.circle(400*s,60)
    DegreeCurve(18, 50*s)
    t.fd(250*s)
    t.right(150)
    t.circle(-500*s,12)
    t.left(140)
    t.circle(550*s,110)
    t.left(27)
    t.circle(650*s,100)
    t.left(130)
    t.circle(-300*s,20)
    t.right(123)
    t.circle(220*s,57)
    t.end_fill()                  # 结束花瓣的绘制
    t.left(120)                 # 开始绘制花枝
    t.fd(280*s)
    t.left(115)
    t.circle(300*s,33)
    t.left(180)
    t.circle(-300*s,33)
    DegreeCurve(70, 225*s, -1)
    t.circle(350*s,104)
    t.left(90)
    t.circle(200*s,105)
    t.circle(-500*s,63)
    t.penup()
    t.goto(170*s,-30*s)
    t.pendown()
    t.left(160)
    DegreeCurve(20, 2500*s)
    DegreeCurve(220, 250*s, -1)          # 结束
    t.fillcolor('green')                # 绘制一个绿色叶子
    t.penup()
    t.goto(670*s,-180*s)
    t.pendown()
    t.right(140)
    t.begin_fill()
    t.circle(300*s,120)
    t.left(60)
    t.circle(300*s,120)
    t.end_fill()
    t.penup()
    t.goto(180*s,-550*s)
    t.pendown()
    t.right(85)
    t.circle(600*s,40)              # 结束
    t.penup()                  # 绘制另一个绿色叶子
    t.goto(-150*s,-1000*s)
    t.pendown()
    t.begin_fill()
    t.rt(120)
    t.circle(300*s,115)
    t.left(75)
    t.circle(300*s,100)
    t.end_fill()
    t.penup()
    t.goto(430*s,-1070*s)
    t.pendown()
    t.right(30)
    t.circle(-600*s,35)
    t.done()                 #玫瑰花结束绘制

     

     

     

     (2)叠加等边三角形

    # 往里叠加的等边三角形from turtle import *
    n = int(input("请输入需要绘制的三角形个数:"))
    d = 300for i in range(n):
        for j in range(3):
            seth((-1)**i*120*j)
            fd(d)
        fd(-d/2)
        d /= 2
    ht()
    pu()
    home()
    write("已绘制{}个等边三角形".format(n))

     

     

  • 相关阅读:
    python之Socket网络编程
    python_异常处理
    python_面向对象编程
    Vue-cli3与springboot项目整合打包
    命令打开java控制面板
    后端记录用户登录失败次数
    跨域问题解决办法
    vue-i18n多语言文件归类的两种方法
    svn全局设置过滤文件没有作用的解决办法
    vue数据变化后页面刷新
  • 原文地址:https://www.cnblogs.com/xiayiLL/p/10524909.html
Copyright © 2011-2022 走看看