turtle

turtle

一、tuetle的坐标体系

  1. 画布在屏幕中的坐标系

    • 画布的(0,0)坐标位于屏幕的左上方;最小单位为像素(px)。

    • setup()可以设置画布的大小及位置

      格式:turtle.setup(width, height, startx, starty)

      width: 画布长度
      height: 画布宽度
      startx: 画布起始的x坐标
      starty: 画布起始的y坐标

      turtle.setup(1200, 1000, 100, 100) # 设置画布大小为 长1200px,宽1000px,起始位置为(100,100)
      

      image-20230707150634316

      setup()不是必须的,只有当需要改变画布大小或者坐标位置的时候使用;如果没有设置setup(),直接使用turtle进行绘图,则画布默认大小尺寸为 800px × 600px,并且位于屏幕的正中央。

      setup()的四个参数,可以没有坐标信息,甚至可以连四个参数都没有。如果四个参数都没有,则按照默认尺寸和位置进行设置。

      setup()前两个参数可以使用小于等于1.0的小数表示,代表的是画布的大小占整个屏幕尺寸的比例。比如setup(1.0, 1.0)代表的是按屏幕尺寸100%的比例进行设置,setup(0.5, 0.5)代表的是按照屏幕尺寸的50%比例缩小画布。

      下图是setup(0.5, 0.5)的结果:

      image-20230707150118460

    • sscreensize()可以设置画布的大小及位置

      格式:turtle.screensize(width, height, color)

      width: 画布长度
      height: 画布宽度
      color: 画布颜色

      turtle.setup(1200, 1000, "blue") # 设置画布大小为 长1200px,宽1000px,颜色为蓝色
      
  2. 画笔在画布中的坐标系

    画笔在画布中的坐标系和画布在屏幕中的坐标系是不一样的,最大的不同是画布的正中心是坐标系的原点(0,0),如下图所示:

    由上图可以看出,这就是标准的xOy坐标系,横坐标为x,纵坐标为y,原点O的坐标为(0,0)。

    image-20230707151453131

    对应的命令:turtule.goto(x, y),作用为让小海龟走到指定的坐标,单位为像素。


二、turtle的画笔体系

  1. 画笔的命名

    在turtle中可以由多支画笔,但是每一支画笔都必须要有自己独有的名字,如果只有一支画笔,则不需要命名。

    画笔命名函数:turtle.Pen()格式为 pen1 = turtle.Pen();前面的pen1为画笔的名称,命名画笔后,该画笔的所有函数需要在前面加上画笔名称,不能再使用默认的turtle前缀。

    pen1 = turtle.Pen()	# 为画笔设置名称为pen1
    pen1.goto(100,100)	# 让画笔pen1移动到画布(100,100)的位置
    
  2. 画笔设置函数

    • turtle.pensize(a)

      • 参数:a代表画笔的像素数
      • 作用:设置画笔的粗细
      • 特别说明:画笔设置粗细只改变设置后的绘图,设置前已经绘制的图形不改变
    • turtle.penup()

      • 参数:无
      • 作用:抬笔
      • 特别说明:抬笔后,画笔的所有操作及移动都不会在画笔上留下痕迹
    • turtle.pendown()

      • 参数:无
      • 作用:落笔
      • 特别说明:画笔落下后,才能绘制响应的图形
    • turtle.hideturtle()

      • 参数:无
      • 作用:隐藏小乌龟
      • 特别说明:隐藏并不影响小海龟的绘图,即隐藏后小海龟还是可以绘图的
    • turtle.showturtle()

      • 参数:无
      • 作用:显示小乌龟
    • turtle.shape()和turtle.Turtle()

      • 参数:"arrow"、"turtle"、"circle"、"square"、"triangle"、"classic"
      • 作用:设置小海龟的形状
      • 特别说明:默认小海龟形状为"classic";参数为字符串,所以必须要加引号
    • turtle.write(arg,move=false,align='left',font=('arial',8,'normal'))

      • 参数:

        ①arg为需要书写的文字信息
        ②move为可选参数,如果move为True,则笔将移动到右下角
        ③align为可选参数,只能是字符串"left"、"center"、"right"之一,表示字符的对齐方式;
        ④font为可选参数,表示所要使用的字体。

      • 作用:在小海龟当前书写文字

    import turtle
    
    pen1 = turtle.Pen() # 设置画笔名字
    pen1.pensize(5)     # 设置画笔粗细
    pen1.shape("turtle")    # 设置画笔图形
    pen1.goto(100,0)    # 让画笔移动到(100,0)位置
    pen1.write("python",align='left',font=('arial',20,'normal'))    # 在画笔当前位置书写文字
    
    image-20230707153507972
  3. 与颜色相关的设置

    • turtle.pencolor(color)

      • 参数:color代表的是画笔的颜色

      • 作用:设置画笔的颜色

      • 特别说明:参数color有两种表示方式。(后续所有color参数均可以使用下面的两种方式表示)

        ①字符串形式,如:turtle.pencolor("green"),该语句会将画笔设置为绿色

        ②RGB三原色模式,如:turtle.pencolor(255, 0, 0),该语句会将画笔设置为蓝色。但是在使用RGB三原色模式时,需要在前面加上turtle.colormode(255),将颜色设定为RGB模式

    • turtle.fillcolor(color)

      • 参数:color代表是填充颜色
      • 作用:设置填充颜色
      • 特别说明:填充颜色需要在开始前进行声明才有效
    • turtle.color(color1, color2)

      • 参数:color1代表的是画笔颜色;color2代表的是填充颜色
      • 作用:同时设置画笔及填充颜色
      • 特别说明:如果只有一个参数,则代表该颜色既是画笔颜色也是填充颜色
    • turtle.begin_fill()

      • 参数:无
      • 作用:设置填充的起始点,表示开始填充
      • 特别说明:开始填充必须和结束填充成对配合使用
    • turtle.end_fill()

      • 参数:无
      • 作用:设置填充的终点
      • 特别说明:结束填充必须和开始填充成对配合使用
    • turtle.bgcolor(color)

      • 参数:color代表背景的颜色
      • 作用:设置画布的背景颜色

三、turtle的运动体系

  1. turtle的相对方向

    小乌龟(画笔)在画布上是有方向的,默认的小乌龟的头部(前方)为屏幕的右侧,尾部(后方)为屏幕的左侧,小乌龟的右侧为屏幕的下方,小乌龟的左侧为屏幕的上方,如图所示:

    image-20230708211239727

    小乌龟的方向会随着画笔方向的改变进行改变,所以,该方向为相对方向,以小乌龟的头部所朝向的前方为标准建立新的方向体系。

    对应的命令有:turtle.forward(a)、turtle.backward(a)、turtle.circle(radius, extent=None, steps=None)、turtle.left(angle)、turtle.right(angle);这些命令的具体用法可以参考下边的相关函数介绍。

  2. turtle的绝对方向

    除了相对于小海龟头部方向的相对方向之外,turtle还有绝对方向,其特征如下:

    • 绝对方向是不变的

    • 绝对方向的划分如下:屏幕的右方为0°起点,也是360°终点;屏幕上方为 90°(逆时针)/ 270°(顺时针);屏幕左侧为 180° / -180°;屏幕下方为 270° / -90°

      image-20230708211709806
  3. 相关函数

    • turtle.goto(x, y)

      • 参数:(x, y)为目标位置的x坐标及y坐标
      • 作用:让小乌龟直线前进到指定坐标
    • turtle.forward(a)

      • 参数:a代表移动的像素数
      • 作用:让小乌龟向前移动a个像素
      • 特别说明:可以简写为 turtle.fd(a)。如果a是负数,代表后退a像素
    • turtle.backward(a)

      • 参数:a代表移动的像素数
      • 作用:让小乌龟向后移动a个像素
      • 特别说明:可以简写为 turtle.bk(a)。如果a是负数,代表前进a像素
    • turtle.left(angle)

      • 参数:angle代表旋转的角度
      • 作用:让小海龟向左旋转angle度
      • 特别说明:参数为正,代表左转;参数为负,代表右转
    • turtle.right(angle)

      • 参数:angle代表旋转的角度
      • 作用:让小海龟向右旋转angle度
      • 特别说明:参数为正,代表右转;参数为负,代表左转
    • turtle.circle(radius, extent=None, steps=None)

      • 参数:

        ①radius代表的是半径,这个参数是必要的

        ②extent代表的是弧度的度数,如果没有,则默认为360°

        ③steps代表的是绘制该弧度所需用的边数

      • 作用:绘制圆或者圆弧

    • turtle.setheading(angle)

      • 参数:angle为必要参数,代表旋转到的绝对角度,参数可以为负数
      • 作用:让小乌龟转到指定的绝度绝对角度
      • 特别说明:可以简写为 turtle.seth()
    • turtle.speed(a)

      • 参数:a的数值范围是 0-10,数字越大,速度越快,但是最快的是0而不是10,那是因为当参数为0时,turtle绘图无动画
      • 作用:设定画笔的运动速度
    • turtle.dot(a)

      • 参数:a为圆点的半径,单位为像素
      • 作用:绘制圆点
    • turtle.home()

      • 参数:无
      • 作用:让小乌龟返回原点
      • 特别说明:小乌龟返回原点(0,0)后,方向为初始方向,即屏幕的右方,但是画笔的颜色等设置依然保留

练习

(一)单选题

  1. 能改变画笔颜色的命令是?()

    A.turtle.colormode(); B.turtle.pencolor(); C.turtle.setup(); D.tuetle.pu();

  2. 下列Turtle库中画笔属性说法错误的是?()

    A.turtle.pensize():设置画笔的宽度

    B.turtle.pencolor():设置画笔的颜色

    C.turtle.speed():设置画笔的移动速度

    D.turtle.distance():设置画笔的移动距离

  3. 下面的哪一个命令不是画笔控制的命令?()

    A.tuetle.up(); B.tuetle.pd(); C.tuetle.pensize(); D.turtle.screensize()

  4. turtle.speed()命令设定笔运动的速度,其参数范围是?()

    A.0-10的整数; B.1-10的整数; C.0-100的整数; D.1-100的整数

  5. 下列哪个命令可以将整个绘制屏幕的颜色设置成黑色?()

    A.turtle.screensize("black")

    B.turtle.fillcolor("black")

    C.turtle.bgcolor("black")

    D.turtle.pencolor("black")

  6. Turtle库中,用于将画笔移动到坐标(x,y)位置的命令是?()

    A.turtle.go(x,y); B.turtle.go(y,x); C.turtle.goto(x,y); D.turtle.goup(x,y)

  7. 下面这段代码召唤了几只画笔海龟?()

    import turtle
    pen = turtle.Pen()
    t = turtle.Pen()
    p = turtle.Pen()
    pen.pensize(5)
    pen,forward(100)
    

    A.1; B.2; C.3; D.4

  8. 下列程序绘制的是一个什么图形?

    import turtle
    turtle.forward(100);turtle.left(120)
    turtle.forward(100);turtle.left(120)
    turtle.forward(100);turtle.left(120)
    

    A.等边三角形; B.正方形; C.矩形; D.圆

  9. 下面哪个选项不能改变turtle画笔的方向?()

    A.right(); B.left(); C.bk(); D.seth()

  10. 执行下面代码后,走出了一个正方形形状,此时海归的面朝方向应该是往哪里?()

    import turtle
    turtle.goto(0,0)
    turtle.goto(0,100)
    turtle.goto(100,100)
    turtle.goto(100,0)
    turtle.goto(0,0)
    

    A.水平向左; B.水平向右; C.垂直向上; D.垂直向下

  11. turtle.circle(90, 180)是绘制一个什么样的图形?()

    A.半径为180的扇形; B.半径为90的半圆; C.半径为90的圆形; D.半径为180的圆形

  12. turtle.circle(150, steps=5)命令能绘制出以下哪个图形?()

    A.直径为150像素的圆内接正五边形

    B.半径为150像素的圆内接正五边形

    C.半径为150像素的圆内接五角星

    D.边长为150像素的正五边形

  13. turtle.clear()命令的作用是?()

    A.清空turtle窗口,但是turtle的位置和状态不会改变

    B.清空turtle窗口,turtle的位置和状态会改变

    C.清空turtle变量,但是turtle的位置和状态不会改变

    D.清空turtle变量,turtle的位置和状态会改变

  14. 下列代码不能画出直径为10的点的是?()

    A.turtle.pensize(10);turtle.pendown()

    B.turtle.dot(10)

    C.turtle.begin.fill();turtle.circle(5);turtle.end_fill()

    D.turtle.begin.fill();turtle.circle(10);turtle.end_fill()

(二)判断题

  1. turtle.speed()设置速度时,参数为10时速度最快。( )
  2. 使用Turtle时,画布默认坐标左上角为画布中心。( )
  3. Python中使用import turtle命令导入turtle库。( )
  4. 在Turtle库中,turtle.screensize()和turtle.setup()都能设置画布大小,但是前者默认大小为(400,300)后者默认大小为(800,600)。( )
posted @ 2023-10-16 11:46  离渊灬  阅读(281)  评论(0)    收藏  举报