• Python turtle学习笔记


    写一个你自己的turtle 库的学习笔记

    1.turtle库的简单介绍

    • turtle(海龟)库是turtle绘图体系的python实现,turtle库是一种标准库,是python自带的
    • turtle(海龟)是一种真实的存在,有一个海龟在窗口的正中心,在画布上游走,走过的轨迹形成了绘制的图形,海龟由程序控制,可改变颜色,宽度等

    2.turtle绘图窗体布局
    在电脑上会出现一个窗口,这个是turtle的画布,使用的最小单位是像素
    其中可以通过turtle.(width,height,startx,starty)来设置窗口初始位置及大小

    3.turtle的空间坐标体系–(绝对坐标和海龟坐标)
    绝对坐标是以屏幕为坐标系,中心位置为(0,0)

    可以用turtle.goto(x,y)来让海龟从当前位置走到(x,y)

    另外一种是海龟坐标,是以海龟本身为参考系

    turtle.fd(d)表示向海龟前方
    turtle.bk(d)表示向海龟后方
    turtle.circle(半径,弧度)表示海龟以左侧某一点为圆心的曲线方向

    4.turtle的角度坐标体系
    绝对坐标:turtle.seth(angle)来改变海龟的游走方向,只改变方向

    海龟坐标:
    turtle.left(angle),turtle.right(angle)来以海龟为参考系改变方向

    实例:
    import turtle
    turtle.left(45)
    turtle.fd(150)
    turtle.right(135)
    turtle.fd(300)
    turtle.left(135)
    turtle.fd(150)

    5.RGB色彩体系
    RGB是由红绿蓝三种颜色通道的颜色组合,每种颜色取值范围是0-255的整数或0-1的小数
    系统默认的是小数表示如果想切换成整数,可以使用
    turtle.colormode(1.0/255)来变换表示方式

    6.turtle画笔控制函数
    turtle.penup() #画笔抬起 别名turtle.pu()
    turtle.pendown()#画笔降下 别名turtle.pd()
    turtle.pensize(宽度) #画笔宽度
    别名turtle.width(宽度)
    turtle.pencolor(color) #画笔颜色 color为字符串 或者 R G B 的值

    turtle.speed(speed):设置画笔移动速度
    turtle.fillcolor(colorstring) 绘制图形的填充颜色
    turtle.color(color1,color2)同时设置画笔颜色color1, 填充颜色color

    7.turtle的运动控制函数
    可以控制海龟走直线走曲线
    turtle.forward(d) 

    8.turtle的方向控制函数

    turtle.setheading(angle)#改变行进方向

    别名turtle.seth()
    turtle.left(angle) 
    turtle.right(angle) 
     实例

    turtle 绘制玫瑰花

    #

    # 定义一个曲线绘制函数
    def DegreeCurve(n, r, d=1):
    for i in range(n):
    t.left(d)
    t.circle(r, abs(d))


    # 初始位置设定
    t.begin_fill()
    s = 0.2 # size
    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()
    t.end_fill()

  • 相关阅读:
    无缝世界场景加载的解决方案研究
    3D物体绘制不见
    dx sdk中关于常用dx api的performace性能参数
    OpenGL/DirectX渲染技巧集
    每天送你一個simle
    [原创] 一种页面数据错误输入提示方法
    [原创] ASP.NET 中如何弹出提示窗口然后导向另外一个页面
    [原创] 部署含有ReportView的控件的ASPX页面时出现错误
    公布一个简单的日志记录方法
    [原创] 如何在没有ASP.NET AjaxEnabled Web Site 向导的情况下加入Ajax支持
  • 原文地址:https://www.cnblogs.com/kwjl/p/12554213.html
Copyright © 2020-2023  润新知