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

參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM