• Python turtle(介绍一)


    关于绘制图形库turtle

    # 画布上,默认有一个坐标原点为画布中心的坐标轴(0,0),默认"standard"模式坐标原点上有一只面朝x轴正方向小乌龟

    一:海龟箭头Turtle相关方法

    #############################

    # 1.绘制的运动 #

    #############################

    a).移动和绘制

    # turtle.forward(distance) | turtle.fd(distance)

    # 画笔向绘制方向的当前方向移动distance(integer or float)的pixels距离,

    # 例如:

     turtle.fd(150)

    # turtle.backward(distance) | turtle.back(distance) | turtle.bk(distance)

    # 画笔向绘制方向的相反方向移动distance(integer or float)的pixels距离

    # 例如:

    turtle.backward(200)

    # turtle.right(angle) | turtle.rt(angle)

    # 绘制方向向右旋转angle度

    # 例如:

    turtle.rt(45)

    # turtle.left(angle) | turtle.lt(angle)

    # 绘制方向向左旋转angle度

    # 例如:

    turtle.lt(45)

    # turtle.setpos(x, y=None) | turtle.setposition(x, y=None) | turtle.goto(x, y=None)

    # 移动到绝对位置,如果画笔按下,就画线

    # 参数x(a number or a pair/vector of numbers)

    # 参数y(a number or None)

    # 如果y为None,x必须是a pair of coordinates or a Vec2D

    # 例如:

    turtle.setpos((20,80))

    turtle.setposition(120,20)

    turtle.goto(60,30)

    # turtle.setx(x)

    # y纵向坐标不变,更改x横向坐标,x(integer or float)

    # 例如:

    turtle.setx(15)

    # turtle.sety(y)

    # x横向坐标不变,更改y纵向坐标,y(integer or float)

    # 例如:

    turtle.sety(15)

    # turtle.seth(to_angle) | turtle.setheading(to_angle)

    # 将方向设置成to_angle.to_angle(integer or float)to_angle的值在不同模式下含义如下

    "standard"模式逆时针 "logo"模式顺时针

    0 - east 0 - north

    90 - north 90 - east

    180 - west 180 - south

    270 - south 270 - west

    如下图"standard"模式时(默认0时表示x方向向右即向东);"logo"模式时(默认0时表示y方向向上即向北)

    y"logo"时

                ^

    |

    |

    |

    (0,0)——————> x"standard"时

    # 例如:

    # "standard"模式时角度为逆时针,所以90度表示向北;logo"模式时角度为顺时针,所以90度表示向东

    turtle.setheading(90)

    # turtle.home()

    # 将位置和方向恢复到初始状态,位置初始坐标为(0,0),方向初始为("standard"模式为right向右即东,"logo"模式是up向上即北)

    # 例如:

    turtle.home()

    # turtle.circle(radius, extent=None, steps=None)

    # 按给定的半径画圆,当前位置为圆的初始端点

    Parameters:

    radius(a number,圆半径,为正数则逆时针画,为负数则顺时针画,方向随着轨迹的变化而变化)

    extent(a number or None,一个角度,决定哪部分圆圈被绘制,不提供extent表示画完整的圆)

    steps(an integer or None,指定半径radius前提下,完成extent的角度时,分了几步,如画正5边形时turtle.circle(40, None, 5))

    # 例如:

    turtle.home()

    # 当前位置(0,0)开始逆时针画半径为30的圆

    turtle.circle(30)

    # 逆时针画半径为50的半圆

    turtle.circle(50, 180)

    # 方向值为180,"standard"模式时方向向左,"logo"模式方向向下

    print(turtle.heading())

    turtle.circle(-50, 180)

    print(turtle.heading())

    # 逆时针方向半径为40画五边形(5步画接近整圆的图形)

    turtle.circle(40, None, 5)

    # turtle.dot(size=None, *color)

    # 按给定直径size画圆点(None[未提供时取pensize+4 和 2*pensize中的最大值] 或 >= 1的整数),color圆点颜色

    # 例如:

    turtle.home()

    # 当前画笔大小为1

    print(turtle.pensize())

    # 未提供取最大直径值为pensize+4 = 5

    turtle.dot()

    turtle.fd(50)

    # 以直径为5画蓝色圆点

    turtle.dot(5, "blue")

    turtle.fd(50)

    # 以直径为20画红色圆点

    turtle.dot(20, "red")

    turtle.fd(50)

    print(turtle.position())

    print(turtle.heading())

    # turtle.stamp()和turtle.clearstamp(stamp_id)和turtle.clearstamps(n=None)

    # turtle.stamp()是在当前位置拷贝一份此时箭头的形状,返回一个stamp_id(int型),

    # turtle.clearstamp(stamp_id)用来删除指定stamp_id的箭头形状

    # turtle.clearstamps(n=None),n为None时表示删除所有拷贝的箭头形状;为0不删除;n > 0 表示删除前n个,n < 0 表示删除后n个

    # 例如:

    # 画笔颜色设成红色

    turtle.color("red")

    num = 0

    while num < 5:

    # 当前位置拷贝一份箭头形状

    stamp_id = turtle.stamp()

    turtle.fd(50)

    num += 1

    # 改变画笔颜色为黑

    turtle.color("black")

    # 删除拷贝的箭头形状(此处id最后一次复制的stamp_id)

    turtle.clearstamp(stamp_id)

    # 删除前1个

    turtle.clearstamps(1)

    # 删除后1个

    turtle.clearstamps(-1)

    # 全部删除

    turtle.clearstamps()

    # 不删除

    # turtle.clearstamps(0)

    # turtle.undo()

    # (每调用一次就)撤销最后的一次动作,需要撤销所有可通过while turtle.undobufferentries(),turtle.undobufferentries()返回当前可撤销次数

    # 例如:

    # 一直撤销最后一个动作直到不可撤销

    while turtle.undobufferentries():

    # 撤销最后的一次动作

    turtle.undo()

    # turtle.speed(speed=None)

    Parameters:

    peed为0-10的整数(1-10越来越快,0表示最快,参数为小数会被自动置为整数)或如下内置的速度字符串,如果>10或小于0.5则被置为0;为>=0.5的小数时被置为四舍五入的值。speed未设置则返回当前速度

    # 内置的速度字符串:

    "fastest": 0

    "fast": 10

    "normal": 6

    "slow": 3

    "slowest": 1

    # 例如:

    # 速度为0,表示速度最快

    turtle.speed(0)

    # <0.5速度会被置为0,表示速度最快

    turtle.speed(0.4)

    # >10速度会被置为0,表示速度最快

    turtle.speed(20)

    # 速度字符串fastest,表示速度最快

    turtle.speed("fastest")

    # 速度最慢

    turtle.speed("slowest")

    # 速度为9

    turtle.speed(9)

    b).获取(海龟)箭头的状态

    # position() | pos()

    # 返回(海龟)箭头当前位置坐标

    # 例如:

    turtle.pos()

    # turtle.towards(x, y=None)

    # 返回(海龟)箭头当前位置指向(x,y)位置连线的向量的角度(取决于当前模式,"standard"/"world"默认方向向右(即东)逆时针开始;"logo"模式默认方向向上(即北)顺时针开始)

    Parameters:

    x:x可以是一个number或一个pair/vector of numbers或一个turtle instance

    y:x是一个number,y就是一个number;否则y为None

    # 例如:

    turtle.goto(20, 20)

    # 移动后,位置为(20,20),两个向量分别是(20,20)点到(0, 0)点的向量和(20, 20)点到箭头当前方向的向量("standard"模式默认向右,逆时针算角度,"logo"模式默认向上,顺时针算角度)

    angle = turtle.towards(0, 0)

    print("两向量角度:", angle)

    # turtle.towards((0, 0), None)

    angle = turtle.towards((0, 0))

    print("两向量角度:", angle)

    # turtle箭头当前位置与turtle1箭头当前位置连线的向量到turtle箭头当前位置与turtle当前方向连线的向量角度

    turtle1 = turtle.Turtle()

    turtle1.setpos(0, 0)

    angle = turtle.towards(turtle1)

    # "standard"模式逆时针算角度,所以towards()后的角度angle是225,不是135

    print("两向量角度:", angle)

    # turtle.xcor() 和 turtle.ycor()

    # turtle.xcor()是返回(海龟)箭头的x坐标,turtle.ycor()是返回(海龟)箭头的y坐标

    # 例如:

    turtle.lt(50)

    turtle.fd(100)

    # 打印箭头当前坐标(64.28,76.60)

    print(turtle.pos())

    # 原数据64.27876096865394,保留5位后打印64.27876

    print(round(turtle.xcor(), 5))

    # 原数据76.60444431189781,保留5位后打印76.60444

    print(round(turtle.ycor(), 5))

    # turtle.heading()

    # 返回当前箭头方向角度,取决于当前模式mode,"standard"模式时默认方向向右逆时针计算角度;"logo"模式默认方向向上,顺时针计算角度

    # 例如:

    见turtle.circle中的例子

  • 相关阅读:
    音频播放
    控制器的创建和控制器View的创建
    UIWebView之获取所点位置的图片(放大webView中的图片)
    SQLite的应用
    数据库操作(SQLite)
    计算文件(文件夹)大小
    本人专访微信魔法表情“米悠”作者流星剑
    Swift给每个开发者赢取500万的机会!不看一生后悔。
    疯狂猜图产品和盈利模式分析
    开发者改变世界的初心!
  • 原文地址:https://www.cnblogs.com/programer-xinmu78/p/10661142.html
Copyright © 2020-2023  润新知