zoukankan      html  css  js  c++  java
  • turtle库笔记

    1.Python语言是通用、脚本、开源、跨平台、多模型语言。

    而Python绘图:turtle库的使用

    —turtle库是turtle绘图体系的python实现

    —turtle绘图体系:1969诞生,主要用于程序设计入门

    —turtle库是pyrhon语言的标准库之一,是入门级的图形绘制函数库

    2.Python计算生态=标准库+第三方库

    —标准库:随解释器直接安装到操作系统中的功能模块

    —第三方库:需要经过安装才能使用的功能模块

    —模块:库Library、包Package、模块Module,统称模块

    3.turtle绘图窗体布局:绘制turtle图形首先需要一个绘图窗体(在操作系统上表现为一个窗口),在窗口中使用的最小单位是像素

    —turtle.setup(width,height,startx,starty):

    (1)setup()设置窗体大小及位置

    (2)setup()中四个参数中后两个可选(宽度、高度是指窗体本身的宽度、高度),把后两个参数去掉,由于没有指定左上角在屏幕中的位置,系统默认该窗口在屏幕的正中心

    (3)setup()不是必须要有的

    4.turtle空间坐标体系(turtle窗体内部形成的一个空间坐标体系):包含绝对坐标和海龟坐标两种

    (1)绝对坐标:正中心坐标(0,0),海龟运行方向向着画布的右侧,因此窗体右方向是x轴,上方向是y轴

    绝对坐标系:

    —坐标值:海龟绘制过程中它的画布中间的空间坐标体系,与窗体在屏幕中间的位置的坐标不同,(利用空间坐标改变海龟的行进位置)

    —可利用一些函数改变turtle的行进位置:turtle,goto(x,y)

    (2)海龟坐标:turtle空间坐标体系:

    turtle。fd:指向海龟的正前方向运行

    turtle.bk:向海龟的反方向运行

    turtle,circle:以海龟当前位置左侧的某一点为圆心,进行曲线运行

    这些函数可以改变海龟在空间坐标的位置,进而实现绘图功能

    (3)turtle角度坐标体系:

    turtle.seth(angle):

    —turtle.seth():改变海龟的行进方向,只改变方向但不行进,不在图像中绘制任何信息

    —angle为绝对度数

    (4)海龟角度:

    5.RGB色彩体系:由三种颜色构成万能色

    —RGB指红蓝绿三个通道的颜色组合

    —覆盖视力所能感知的所有颜色

    —RGB每色取值范围0~255整数或0~1小数

    6.turtle库是默认采用RGB的小数值表示颜色:

    —turtle.colormode(mode):改变色彩数值使用:—1.0:RGB小数值模式;—255:RGB整数值模式

    turtle库的使用小结:

    —turtle库的海龟绘图法

    —turtle.setup()调整绘图窗体在电脑屏幕中的布局

    —画布上以中心为原点的空间坐标系:绝对&海龟坐标

    —画布上以空间x轴为0度的角度坐标系:绝对&海龟坐标(以海龟当前位置和它的朝向为准设计)

    —RGB色彩体系:色彩模式切换(相关RGB值可网上查询)

    7.turtle程序语法元素分析:库引用:扩充Python程序功能的方式

    (1)使用import保留字完成,采用<a>.<b>()编码风格

    —import<库名>

    —<库名>.<函数名>(<函数参数>)              (注:此方法不会出现函数重名的问题)

    (2)使用from和import保留字共同完成

    —from<库名>import<函数名>

    —from<库名>import*

        <函数名>(函数参数>)  (此方法后再调用函数过程中,不需要再加库名. 的形式,直接使用函数名加函数参数完成引用)

    (注:此方法会出现函数重名的问题,会使程序运行不一致)

    (3)使用import和as保留字共同完成,形成新的库引用方法:

    —import<库名>as<库别名>

       <库别名>.<函数名>(<函数参数>)

    8.turtle画笔控制函数:画笔操作后一直有效,一般成对出现

    —turtle.penup()   别名   turtle.pu() :抬起画笔,画笔或海龟运行轨迹不在画布形成图案

    —turtle.pendown()  别名  turtle.pd()  :落下画笔

    画笔设置后一直有效,直至下次重新设置

    —turtle.pensize(width)  别名  turtle.width(width) :设置画笔宽度

    —turtle.pencolor(color) :修改画笔颜色(字符串或RGB值赋予颜色)

    (1)oencolor(color)的color参数可有三种形式:1)颜色字符串:turtle.pencolor("purple")  ,字符串形式而且要小写

                                                                             2)RGB的小数值:turtle.pencolor(0.63,0.13,0.94)

                                                                             3)RGB的元组数:turtle.prncolor((0.63,0.13,0.94))

    (2)pencolor(colorstring)、pencolor(r,g,b)、pencolor((r,g,b))

    9.turtle运动控制函数:在绘图上让海龟行动,控制海龟行进:走直线&走曲线

    —turtle.forward(d)  别名  turtle.fd(d) :向前进,走直线

    —d:行进距离,可为负数(倒退行进),具体行进距离单位是像素

    —turtle.circle(r,extent=None) (r若为负数,圆心在右侧半径绝对值):根据半径r绘制extent角度的弧形,走曲线

    —r:默认圆心在海龟左侧r距离的位置

    —extent:绘制角度,默认为360度整圆

    10.turtle方向控制函数:并不在绘图上让海龟行动,控制海龟面对方向:绝对&海龟角度

    (1)绝对角度:turtle.setheading(angle)  别名  turtle.seth(angle) :改变行进方向

                    —angle :改变行进方向

    (2)海龟角度: turtle.left(angle)  、turtle.right(angle)

                        —angel:在海龟当前行进方向上旋转角度

    11.循环语句:按一定次数循环:for <变量> in range(<参数>)

                                                            <被循环执行的语句>

    —<变量>:表每次循环计数,从0到次数-1

    —range()函数:产生循环计数序列

    —range(N):产生0到N-1整数序列,共N个

    —range(M,N):产生M到N-1......,共N-M个

    import turtle as t
    '''
    t.pu()  提起画笔
    t.pd()  移动时绘制图形,缺省时也为绘制
    t.seth  设置当前朝向为angle角度
    t.begin_fill()  准备开始填充图形
    t.color      同时设置pencolor=color1, fillcolor=color2
    t.goto       设置笔的坐标
    t.circle(70,20) 半径 度数
    15,124,215  乔治裤子颜色外面
    66,163,242  乔治裤子颜色里面
    
    134  196  247  天空的颜色
    123,245,95 草地的颜色
    253,6,6  鞋子外面
    253,70,70  鞋子里面
    130,119,100 泥坑
    
    
    '''
    r_a=0.8
    wight = 1100
    height = 700
    #t.pensize(4)
    t.hideturtle()
    t.colormode(255)
    t.color("green")
    t.setup(wight,height)
    t.speed(10)
    def move_pen(x,y):
        t.pu()
        t.goto(x-wight/2+50,y-height/2+50)
        t.pd()
    def pen_set(size,r1,g1,b1,r2=0,g2=0,b2=0):
        t.pensize(size)
        t.color((r1,g1,b1),(r2,g2,b2))
    def draw_grid():
        pen_set(1,0,0,0,0,0,0)
        for i in range(20):
            move_pen(0+i*50,0)
            t.seth(90)
            t.fd(600)
        for i in range(12):
            move_pen(0,0+i*50)
            t.seth(0)
            t.fd(1000)
    
    def draw_bg():
        #画草地
        
        move_pen(0,350)
        pen_set(4,123,245,95, 123,245,95)
        t.begin_fill()
        t.seth(-90)
        t.fd(350)
        t.seth(0)
        t.fd(1000)
        t.seth(90)
        t.fd(350)
        t.end_fill()
        #画天空
        move_pen(0,350)
        pen_set(4,134,196,247, 134,196,247)
        t.begin_fill()
        t.seth(90)
        t.fd(250)
        t.seth(0)
        t.fd(1000)
        t.seth(-90)
        t.fd(250)
        a=-180 + r_a
        for i in range(50):
            a = a - r_a/50
            t.seth(a)
            t.fd(500/50)
        a =180
        for i in range(50):
            a = a - r_a/50
            t.seth(a)
            t.fd(500/50)
        t.end_fill()
        
    def draw_mud_pit():
        #画泥坑
        pen_set(5,130,119,100, 130,119,100)
        move_pen(350,150)
        t.begin_fill()
        t.seth(-180)
        t.circle(50,125)
        t.seth(-20)
        t.circle(350,60)
        t.seth(20)
        t.circle(50,30)
        t.seth(10)
        t.circle(50,30)
        t.seth(0)
        t.circle(50,30)
        t.seth(40)
        t.circle(50,90)
        t.seth(170)
        t.circle(500,45)
        t.end_fill()
        
    def draw_shoes():
        pen_set(3,253,6,6, 253,70,70)
        move_pen(400,100)
        t.begin_fill()
        t.seth(0)
        t.fd(50)
        t.seth(87)
        t.fd(50)
        t.seth(180)
        t.fd(25)
        t.seth(-93)
        t.fd(20)
        t.seth(-180)
        t.fd(25)
        t.seth(-120)
        t.circle(45,38)
        t.end_fill()
        move_pen(470,100)
        t.begin_fill()
        t.seth(0)
        t.fd(50)
        t.seth(87)
        t.fd(50)
        t.seth(180)
        t.fd(25)
        t.seth(-93)
        t.fd(20)
        t.seth(-180)
        t.fd(25)
        t.seth(-120)
        t.circle(45,38)
        t.end_fill()
    def draw_leg(): 
        pen_set(6,255,155,192, 255,155,192)
        move_pen(440,140)
        t.seth(90)
        t.fd(20)
        move_pen(510,140)
        t.seth(90)
        t.fd(20)
    def draw_trousers():
        move_pen(400,300)
        pen_set(6,15,124,215, 66,163,242)
        t.begin_fill()
        a=-130 
        for i in range(60):
            a = a + 2
            t.seth(a)
            t.fd(3)
        for i in range(14):
            a = a + 0.02
            t.seth(a)
            t.fd(2)
        a = 0-a
        for i in range(14):
            a = a + 0.02
            t.seth(a)
            t.fd(2)
        for i in range(60):
            a = a + 2.2
            t.seth(a)
            t.fd(3)
        t.end_fill()
    def draw_tile():
        move_pen(550,177)
        pen_set(6,255,155,192, 255,155,192)
        a=-60 
        for i in range(25):
            a = a + 4
            t.seth(a)
            t.fd(1)
        t.circle(5)
        a = -a
        for i in range(30):
            a = a + 4
            t.seth(a)
            t.fd(1)
    def draw_hands():
        move_pen(550,250)
        pen_set(6,255,155,192, 255,155,192)
        t.seth(20)
        t.fd(70)
        move_pen(600,270)
        t.seth(60)
        t.fd(20)
        move_pen(600,270)
        t.seth(-20)
        t.fd(20)
        
        move_pen(380,250)
        t.seth(160)
        t.fd(50)
        move_pen(350,260)
        t.seth(100)
        t.fd(20)
        move_pen(350,260)
        t.seth(-140)
        t.fd(20)
        
    def draw_face():
        move_pen(400,360)
        pen_set(4,255,155,192, 255,196,218)
        t.begin_fill()
        a=-120 
        for i in range(20):
            a = a + 2.5
            t.seth(a)
            t.fd(2.2)
        for i in range(130):
            a = a + 1.3
            t.seth(a)
            t.fd(1.8)
        for i in range(35):
            a = a + 1.4
            t.seth(a)
            t.fd(2)
        for i in range(50):
            a = a + 0.35
            t.seth(a)
            t.fd(2)
        for i in range(50):
            a = a + 0.2
            t.seth(a)
            t.fd(2)
        n=0.4
        for i in range(180):
            if 0<=i<30 or 60<=i<90 or 120<=i<150 :
                n=n+0.08
                t.lt(3) #向左转3度
                t.fd(n) #向前走a的步长
            else:
                n=n-0.08
                t.lt(3)
                t.fd(n)
        a=-50
        for i in range(20):
            a = a + 2.8
            t.seth(a)
            t.fd(5)
        t.end_fill()
    def draw_other():
        move_pen(310,440)
        pen_set(6,255,145,192, 255,145,192)
        t.begin_fill()
        t.circle(3)
        t.end_fill()
        move_pen(330,430)
        t.begin_fill()
        t.circle(3)
        t.end_fill()
        
        pen_set(6,255,145,192, 255,255,255)
        move_pen(410,425)
        t.begin_fill()
        t.circle(10)
        t.end_fill()
        move_pen(460,395)
        t.begin_fill()
        t.circle(10)
        t.end_fill()
        
        pen_set(6,0,0,0,0,0,0)
        move_pen(405,429)
        t.begin_fill()
        t.circle(3)
        t.end_fill()
        move_pen(455,399)
        t.begin_fill()
        t.circle(3)
        t.end_fill()
        
        move_pen(510,310)
        pen_set(6,255,155,192, 255,155,192)
        t.begin_fill()
        t.circle(25)
        t.end_fill()
        
        move_pen(410,340)
        pen_set(6,255,145,192, 255,145,192)
        a=-80 
        for i in range(20):
            a = a + 6
            t.seth(a)
            t.fd(3)
        move_pen(430,445)
        pen_set(4,255,155,192, 255,196,218)
        t.begin_fill()
        a=120 
        for i in range(40):
            a = a - 2
            t.seth(a)
            t.fd(1.2)
        a=-a
        for i in range(45):
            a = a - 2
            t.seth(a)
            t.fd(1.2)
        t.end_fill()
        move_pen(480,430)
        t.begin_fill()
        a=70 
        for i in range(40):
            a = a -1.5
            t.seth(a)
            t.fd(1.5)
        a=-80
        for i in range(45):
            a = a -1.5
            t.seth(a)
            t.fd(1.5)
        t.end_fill()
    draw_bg()
    draw_mud_pit()
    #draw_grid()
    draw_leg()
    draw_shoes()
    draw_trousers()
    draw_tile()
    draw_hands()
    draw_face()
    draw_other()
    t.mainloop()
    

      

  • 相关阅读:
    7. JavaScript学习笔记——DOM
    6. Javscript学习笔记——BOM
    3. Javascript学习笔记——变量、内存、作用域
    2. Javscript学习笔记——引用类型
    1. JavaScript学习笔记——JS基础
    计算机网络学习笔记——网络层
    python小数据池,代码块知识
    pycharm快捷键
    字典
    04
  • 原文地址:https://www.cnblogs.com/cnn-ljc/p/12492614.html
Copyright © 2011-2022 走看看