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  银河统计  阅读(3109)  评论(0编辑  收藏  举报