python-模块-Turtle

Turtle概念

  Turtle是一个简单的绘图工具。它提供了一个海龟,你可以把它理解为一个机器人,只听得懂有限的指令。


1.在文件头写上如下行,这能让我们在语句中插入中文。

-- coding: utf-8 --

2.用import turtle导入turtle库,海龟绘图属性:

  • (1)位置
  • (2)方向
  • (3)画笔(画笔的属性,颜色、画线的宽度)

3.绘图窗口的原点(0,0)在正中间。默认情况下,海龟向正右方移动。

4.操纵海龟绘图有着许多的命令,这些命令可以划分为两种:一种为运动命令,一种为画笔控制命令。

  • (1)运动命令:
forward(d) 向前移动距离d代表距离
backward(d) 向后移动距离d代表距离
right(degree) 向右转动多少度
left(degree) 向左转动多少度
goto(x,y) 将画笔移动到坐标为(x,y)的位置
stamp() 绘制当前图形
speed(speed) 画笔绘制的速度范围[0,10]整数
  • (2)画笔控制命令:
down() 画笔落下,移动时绘制图形
up() 画笔抬起,移动时不绘制图形
setheading(degree) 海龟朝向,degree代表角度
reset() 恢复所有设置
pensize(width) 画笔的宽度
pencolor(colorstring) 画笔的颜色
fillcolor(colorstring) 绘制图形的填充颜色
fill(Ture) -
fill(False) -
circle(radius, extent) 绘制一个圆形,其中radius为半径,extent为度数,例如若extent为180,则画一个半圆;如要画一个圆形,可不必写第二个参数

5.几个例子

  • 1)画一个边长为60的三角形

    -- coding: utf-8 --

    import turtle
    a=60
    turtle.forward(a)
    turtle.left(120)
    turtle.forward(a)
    turtle.left(120)
    turtle.forward(a)
    turtle.left(120)

  • 2)画一个边长为60的正方形,并填充为红色,边框为蓝色

    -- coding: utf-8 --

    import turtle
    turtle.reset()
    a= 60
    turtle.fillcolor("red")
    turtle.pencolor("blue")
    turtle.pensize(10)
    turtle.fill(True)
    turtle.left(90)
    turtle.forward(a)
    turtle.left(90)
    turtle.forward(a)
    turtle.left(90)
    turtle.forward(a)
    turtle.left(90)
    turtle.forward(a)
    turtle.fill(False)

  • 3)这是一个可以在画布上移动画图的函数,如果学过计算机语言,这些都是很容易理解的,自己捣鼓着玩吧

    -- coding: utf-8 --

    import turtle
    t = turtle.Pen() #布置画布
    t.forward(200) #让画笔往前移动200,这个是有方向的,自己观察
    t.left(90)
    t.backward(100) #让画笔后退100
    t.up() #抬起画笔,休息一下
    t.right(90) #让画笔的方向转一下
    t.down() #放下画笔,接着画图
    t.reset() #重置画布,画错了,来一张新的画布
    t.clear() #清除画布上的笔迹,回到起点

  • 4)画蛇

    import turtle
    def drawSnake(rad, angle, len, neckrad): #
    for i in range(len):
    turtle.circle(rad, angle) # 画圆 rad:圆半径 angle:圆弧度
    turtle.circle(-rad, angle)
    turtle.circle(rad, angle/2)
    turtle.fd(rad) # 表示直线爬行,forward, 参数表示爬行的距离
    turtle.circle(neckrad+1, 180)
    turtle.fd(rad*2/3)
    def main():
    turtle.setup(1300, 800, 0, 0) # 甚至窗口宽+高+起始x/y
    pythonsize = 100
    turtle.pensize(pythonsize) # 设置笔的宽度
    turtle.pencolor("red") # 设置笔的颜色
    turtle.seth(-40) # 设置笔的起始角度
    drawSnake(40, 80, 5, pythonsize/2)
    main()

    """"
    python 的调用方式
    1:import 库名
    调用的时:库.函数名
    优点:可以更改函数中函数的名字
    2, from 库名 import 函数名
    """

  • 5)画五角星

    顺序结构

    import turtle
    turtle.setup(2000, 2000, 0, 0)
    turtle.pensize(20)
    turtle.pencolor("black")
    turtle.seth(0)
    turtle.fd(400)
    turtle.seth(-144)
    turtle.fd(400)
    turtle.seth(-144-144)
    turtle.fd(400)
    turtle.seth(-144 - 144-144)
    turtle.fd(400)
    turtle.seth(-144 - 144-144-144)
    turtle.fd(400)

    循环结构1

    import turtle
    turtle.setup(2000, 2000, 0, 0)
    turtle.pensize(20)
    turtle.pencolor("black")
    turtle.seth(0)
    length = 400
    angle = 0
    for i in range(5):
    turtle.fd(length)
    angle = angle - 144
    turtle.seth(angle)

    循环结构2

    import turtle
    import time
    turtle.color("purple")
    turtle.pensize(5)
    turtle.goto(0,0)
    turtle.speed(10)
    for i in range(6):
    turtle.forward(100)
    turtle.right(144)
    turtle.up()
    turtle.forward(100)
    turtle.goto(-150,-120)
    turtle.color("red")
    turtle.write("Done")
    time.sleep(3)

    循环递归函数

    import turtle
    def drawFivePiontedStar(length, angle):
    """
    Draw five_pointed_star by turtle library
    Initial screen ;width+height+initial position
    Initial pen: font+color
    Drawing line by recursive_function
    :param length: Initial five_pointed_star length
    :param angle: Initial position
    :return: None
    """
    def drawline(length, angle):
    turtle.seth(angle)
    turtle.fd(length)
    turtle.setup(2000, 2000, 0, 0)
    turtle.pensize(20)
    turtle.pencolor("black")
    for i in range(5):
    drawline(length, angle)
    angle = angle-144

    if name == "main":
    drawFivePiontedStar(400, 0)

  • 5)画树

    import turtle
    def branch(length, level):
    """
    使用递归函数实现画树
    以没有树杈为例
    起始角度为90°
    向左转换角45°,看有没有树杈(level)
    如果没有,向右转换角90°(-45),看有没有树杈
    如果没有,向右转换45°(0),返回原路
    """
    if level <= 0:
    return

    turtle.forward(length)
    turtle.left(45)
    branch(0.6 * length, level - 1) # 90
    turtle.right(90)
    branch(0.6 * length, level - 1)
    turtle.left(45)
    turtle.backward(length)
    return

    if name == "main":

    turtle.left(90)
    branch(100, 3)

  • 6)绘制正方形

    import turtle
    import time
    #定义绘制时画笔的颜色
    turtle.color("purple")
    #定义绘制时画笔的线条的宽度
    #turtle.size(5)
    turtle.pensize(5)
    #定义绘图的速度
    turtle.speed(10)
    #以0,0为起点进行绘制
    turtle.goto(0,0)
    #绘出正方形的四条边
    for i in range(4):
    turtle.forward(100)
    turtle.right(90)
    #画笔移动到点(-150,-120)时不绘图
    turtle.up()
    turtle.goto(-150,-120)
    #再次定义画笔颜色
    turtle.color("red")
    #在(-150,-120)点上打印"Done"
    turtle.write("Done")
    time.sleep(3)

  • 7)复杂的形状

    from turtle import *
    color('red', 'yellow')
    begin_fill()
    while True:
    forward(200)
    left(170)
    if abs(pos()) < 1:
    break
    end_fill()
    done()


参考

posted @ 2016-12-31 21:16  银河统计  阅读(3212)  评论(0)    收藏  举报