当前位置 博文首页 > 汉阳Hann's Home:Python turtle库——如何瞬间完成作图?难道只

    汉阳Hann's Home:Python turtle库——如何瞬间完成作图?难道只

    作者:[db:作者] 时间:2021-09-22 22:39

    第一次入选周创作榜,截个图留个念!

    作为一个74年出生的中年业余玩家,第一次进CSDN周创作榜,恰好呢还是第74名,真的真的有点小窃喜。容我陶醉一下,这算不算凡尔赛?

    好吧,言归正传。先问一下,大家有没有在小霸王学习机上用过LOGO语言呢?小霸王学习机是成龙代言的,用过的朋友,岁数也都不小了吧?用各种各样的插卡可以换节目,学习、游戏都有。隐约记得其中有个“海龟画图”的程序,其实它就是LOGO语言,或者说是一个子集。

    LOGO语言简介

      20世纪60年代,美国麻省理工学院人工智能实验室的西摩尔·帕伯特专为孩子们设计了一种叫LOGO的计算机语言,是一种易学、易懂、易于掌握的结构化程序设计语言,出发点是将原本较为枯燥的程序设计形象化,希望学生不要机械地记忆事实,使学生在掌握了为数不多的LOGO原始命令后,能在发现和探索中学习,通过操纵屏幕上的海龟来学习编写程序,强调创造性的探索能给学生严密的计算思维和有趣的学习体验。它具有三部分功能:一是编辑功能,可以进行命令与过程的编辑,使学生们了解成年人是怎样进行文字编辑工作的;二是驱使海龟移动业绘出各种图形的功能,即海龟作图功能;三是字表处理与数值处理的功能。
      LOGO语言是一种结构化程序设计语言。它是交互式的,为人们提供了良好的编程环境;它是模块化的,便于程序的修改与扩充;它是过程化的,包含了过程、参数、变量等重要概念,并允许递归调用;它有丰富的数据结构类型;有生动的图形处理功能。它不仅具备多种优秀程序设计语就能掌握LOGO的基本绘图指令,高年级学LOGO程序设计自然不是难事。 ——摘自百度百科

    如今python的turtle库把它给复活了,python2.6版本开始引入了turtle库,也能海龟作图了!
    ?

    turtle库函数

    >>> import turtle as t
    >>> t.__all__
    ['ScrolledCanvas', 'TurtleScreen', 'Screen', 'RawTurtle', 'Turtle',
     'RawPen', 'Pen', 'Shape', 'Vec2D', 'addshape', 'bgcolor', 'bgpic',
     'bye', 'clearscreen', 'colormode', 'delay', 'exitonclick', 'getcanvas',
     'getshapes', 'listen', 'mainloop', 'mode', 'numinput', 'onkey', 'onkeypress',
     'onkeyrelease', 'onscreenclick', 'ontimer', 'register_shape', 'resetscreen',
     'screensize', 'setup', 'setworldcoordinates', 'textinput', 'title', 'tracer',
     'turtles', 'update', 'window_height', 'window_width', 'back', 'backward',
     'begin_fill', 'begin_poly', 'bk', 'circle', 'clear', 'clearstamp', 'clearstamps',
     'clone', 'color', 'degrees', 'distance', 'dot', 'down', 'end_fill', 'end_poly',
     'fd', 'fillcolor', 'filling', 'forward', 'get_poly', 'getpen', 'getscreen',
     'get_shapepoly', 'getturtle', 'goto', 'heading', 'hideturtle', 'home', 'ht',
     'isdown', 'isvisible', 'left', 'lt', 'onclick', 'ondrag', 'onrelease', 'pd',
     'pen', 'pencolor', 'pendown', 'pensize', 'penup', 'pos', 'position', 'pu',
     'radians', 'right', 'reset', 'resizemode', 'rt', 'seth', 'setheading',
     'setpos', 'setposition', 'settiltangle', 'setundobuffer', 'setx', 'sety',
     'shape', 'shapesize', 'shapetransform', 'shearfactor', 'showturtle', 'speed',
     'st', 'stamp', 'tilt', 'tiltangle', 'towards', 'turtlesize', 'undo',
     'undobufferentries', 'up', 'width', 'write', 'xcor', 'ycor',
     'write_docstringdict', 'done', 'Terminator']
    >>> 

    来挑几个常用的回忆下“小时候”的感觉:

    命令说明
    .forward() | fd( )向当前画笔方向移动distance像素长
    .backward() | bd( ) | back( )向当前画笔相反方向移动distance像素长度
    .right() | rt()顺时针移动degree°
    .left() | lt()逆时针移动degree°
    .pendown()移动时绘制图形,缺省时也为绘制
    .penup()移动时不绘制图形,提起笔,用于另起一个地方绘制时用
    .pensize(width)绘制图形时的宽度
    .pencolor()画笔颜色
    .fillcolor()绘制图形的填充颜色 fillcolor(colorstring)
    .color()同时设置pencolor=color1, fillcolor=color2
    .filling()返回当前是否在填充状态
    .begin_fill()准备开始填充图形
    .end_fill()填充完成
    .setheading() | seth()设置当前朝向为某个角度
    .position() | pos()返回乌龟当前的位置 (x,y)
    .goto(x,y) | setpos() | setposion()将画笔移动到坐标为x,y的位置
    .setx().sety()将当前x轴、y轴移动到指定位置
    .xcor().ycor()返回画笔xy坐标
    .degrees()?将角度设置为度量单位,degrees(fullcircle=360.0 )
    .radians()?将弧度设置为角度度量单位,相当于degrees(2*math.pi)
    .home()设置当前画笔位置为原点,朝向东
    .speed(speed)画笔绘制的速度,speed范围0~10
    .circle()画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆
    .dot()使用给定颜色绘制给定直径大小的圆点 dot(size=None, *color)
    .hide()隐藏箭头显示
    .show()与hideturtle()函数对应
    .clear()清空turtle窗口,但是turtle的位置和状态不会改变
    .reset()清空窗口,重置turtle状态为起始状态
    .undo()撤消(重复)最后一次动作,撤消操作数由取消缓冲区的大小决定
    .isvisible()返回当前turtle是否可见
    .stamp()复制乌龟形状的副本在当前canvas上,返回stamp_id
    .clearstamp(stampid)删除给定stamp_id对应的标记
    .clearstamps(n=None)删除标记的全部或前/n
    cs