Python turtle學習筆記


一、簡介

Turtle最早來自於LOGO語言,是專門用於小孩子學習編程的,通過編程模擬一只turtle(海龜)在畫板上爬行繪制圖案,后來很多高級語言都移植了海龜繪圖,python從2.6之后也將turtle庫加入了其內部庫中。由於是內部庫,使用import turtle語句就能引入turtle庫,繪圖主要有以下幾個步驟:設置畫布、設置畫筆、控制海龜移動繪制圖形、色彩填充等。

二、基礎知識

1)turtle庫的引用

引用turtle庫主要有以下三種方法:

 1.使用import保留字直接引用

 

import turtle #每次使用函數需加上turtle.

 

2.使用from和import保留字共同完成

from turtle import * #調用函數時不用加turtle.,但可能會與變量名重復

3.使用import和as保留字共同完成

import turtle as t #給turtle庫起了個別名t

 

 

2)畫布

畫布即turtle提供的繪圖區域,可用以下指令設置畫布的規模

1.

turtle.setup(width,height, startx, starty)

width為畫布的寬度;

heigh為畫布的高度;

(startx,starty)這一坐標表示矩形窗口左上角頂點的位置, 如果為空,則窗口位於屏幕中心。

 

 

如:

turtle.setup(650,300,100,100)

2.

turtle.screensize(canvwidth canvheight, bg)

canvwidth為畫布的寬度;

canvheight為畫布的高度;

bg為畫布背景顏色。

如:

turtle.screensize(500,400,"red")

3)畫筆

1、畫筆的狀態

在畫布上,默認有一個坐標原點為畫布中心的坐標軸,坐標原點上有一只面朝x軸正方向小烏龜。這里我們描述小烏龜時使用了兩個詞語:坐標原點(位置),面朝x軸正方向(方向), turtle繪圖中,就是使用位置方向描述小烏龜(畫筆)的狀態。

2、畫筆的屬性

畫筆(畫筆的屬性,顏色、畫線的寬度等)

 

turtle.penside() #設置畫筆的寬度
turtle.pencolor() #沒有參數傳入,返回當前畫筆顏色,傳入參數設置畫筆顏色,可以是字符串如"green", "red",也可以是RGB3元組。
turtle.speed(speed) #設置畫筆移動速度,畫筆繪制的速度范圍[0,10]整數,數字越大越快。

4)操縱畫筆的函數

繪制圖形需要許多讓畫筆移動和轉向甚至顏色的函數,常用到的函數有如下:

 畫筆操作后一直有效,一般成對使用

turtle.penup() #turtle.pu() 提起畫筆移動,不繪制圖形
turtle.pendown() #turtle.pd() 畫筆落下

 畫筆設置后一直有效,直到下次重新設置

turtle.penside(width) #turtle.width(width) 設置畫筆的寬度
turtle.pencolor(color) #設置畫筆的顏色
#color參數有三種形式
#顏色字符串 如turtle.pencolor("pink")
#RGB小數值 如turtle.pencolor(0.63,0.13,0.94)
#RGB整數值 如turtle.pencolor(128,0,128)
#RGB數值元組 如turtle.pencolor((0.63,0.13,0.94))

畫筆改變角度的函數,只轉不動

turtle.right(degree) #順時針移動degree°
turtle.left(degree) #逆時針移動degree°
turtle.seth(degree) #只改變畫筆方向但不移動,degree為絕對度數

 畫筆運動的函數

turtle.forward(distance) #向當前畫筆方向移動distance像素長度
turtle.backward(distance) #向當前畫筆相反方向移動distance像素長度
turtle.goto(x,y) #將畫筆移動到坐標為x,y的位置
turtle.circle(r,extent) #根據半徑r繪制extent角度的弧形,r默認在畫筆左端距離r長度的地方,默認繪制完整的圓

 三、繪制實例

1)Python蟒蛇繪制

代碼如下:

#Python蟒蛇繪制
import turtle
turtle.setup(650, 350, 200, 200)
turtle.penup()
turtle.fd(-250)
turtle.pendown()
turtle.pensize(25)
turtle.pencolor("purple")
turtle.seth(-40)
for i in range(4):
    turtle.circle(40, 80)
    turtle.circle(-40, 80)
turtle.circle(40, 80/2)
turtle.fd(40)
turtle.circle(16, 180)
turtle.fd(40 * 2/3)
turtle.done()

效果圖如下:

 

 

2)繪制一朵玫瑰花

代碼如下:

#繪制一朵玫瑰花
import turtle

# 設置初始位置
turtle.penup()
turtle.left(90)
turtle.fd(200)
turtle.pendown()
turtle.right(90)

# 花蕊
turtle.fillcolor("lightpink")
turtle.begin_fill()
turtle.circle(10, 180)
turtle.circle(25, 110)
turtle.left(50)
turtle.circle(60, 45)
turtle.circle(20, 170)
turtle.right(24)
turtle.fd(30)
turtle.left(10)
turtle.circle(30, 110)
turtle.fd(20)
turtle.left(40)
turtle.circle(90, 70)
turtle.circle(30, 150)
turtle.right(30)
turtle.fd(15)
turtle.circle(80, 90)
turtle.left(15)
turtle.fd(45)
turtle.right(165)
turtle.fd(20)
turtle.left(155)
turtle.circle(150, 80)
turtle.left(50)
turtle.circle(150, 90)
turtle.end_fill()

# 花瓣1
turtle.left(150)
turtle.circle(-90, 70)
turtle.left(20)
turtle.circle(75, 105)
turtle.setheading(60)
turtle.circle(80, 98)
turtle.circle(-90, 40)

# 花瓣2
turtle.left(180)
turtle.circle(90, 40)
turtle.circle(-80, 98)
turtle.setheading(-83)

# 葉子1
turtle.fd(30)
turtle.left(90)
turtle.fd(25)
turtle.left(45)
turtle.fillcolor("green")
turtle.begin_fill()
turtle.circle(-80, 90)
turtle.right(90)
turtle.circle(-80, 90)
turtle.end_fill()

turtle.right(135)
turtle.fd(60)
turtle.left(180)
turtle.fd(85)

#葉子2
turtle.fd(25)
turtle.left(45)
turtle.fillcolor("green")
turtle.begin_fill()
turtle.circle(-80, 90)
turtle.right(90)
turtle.circle(-80, 90)
turtle.end_fill()
turtle.right(135)
turtle.fd(60)
turtle.left(180)
turtle.fd(85)
turtle.right(90)
turtle.fd(85)

# 葉子3
turtle.right(90)
turtle.fd(15)
turtle.right(45)
turtle.fillcolor("green")
turtle.begin_fill()
turtle.circle(80, 90)
turtle.left(90)
turtle.circle(80, 90)
turtle.end_fill()
turtle.left(135)
turtle.fd(60)
turtle.left(180)
turtle.fd(90)

#葉子4
turtle.right(45)
turtle.fillcolor("green")
turtle.begin_fill()
turtle.circle(80, 90)
turtle.left(90)
turtle.circle(80, 90)
turtle.end_fill()
turtle.left(135)
turtle.fd(60)
turtle.left(180)
turtle.fd(75)

turtle.left(90)
turtle.circle(200, 60)
turtle.pendown()
turtle.done()

 效果圖如下:

 

 

 3)繪制太極圖

代碼如下:

 

#繪制太極圖
from turtle import *
setup(800,800,100,100)

#繪制左半部分
fillcolor('#FFFFFF')
begin_fill()
circle(100,180)
circle(200,180)
seth(180)
circle(-100,180)
end_fill()
seth(90)
penup()
fd(85)
pendown()
seth(0)
fillcolor('#000000')
begin_fill()
circle(25)
end_fill()
seth(-90)
penup()
fd(85)
pendown()
seth(180)

#繪制右半部分
fillcolor('#000000')
begin_fill()
circle(100,180)
circle(200,180)
seth(0)
circle(-100,180)
end_fill()
seth(-90)
penup()
fd(85)
pendown()
seth(-180)
fillcolor('#FFFFFF')
begin_fill()
circle(25)
end_fill()
hideturtle()
done()

 

 

 

效果圖如下:

 


免責聲明!

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



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