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()

参考

转载于:https://www.cnblogs.com/cloudtj/articles/6240201.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值