這幾天打算搞點兒有意思的東西,搜索一番發現了一個名爲Turtle的python庫,它是python繪製圖像的函數庫;其原理就是假設有一隻小烏龜,從座標軸原點出發,根據我們設置的一組指令,在整個座標系平面內爬行,從而它的爬行路徑便繪製出了一系列圖形。
關於這個函數庫大家可以去官網查看說明:https://docs.python.org/3/library/turtle.html?highlight=turtle
廢話不多說,我們今天將會基於該庫來製作一個色彩繽紛的節日禮花,直接上代碼,註釋已經講解的很清楚~~~
# # -*- coding:utf-8 -*-
import turtle
import random
turtle.tracer(0, 0) #加速繪製圖形
scr = turtle.Screen() #生成一個屏幕對象
scr.colormode(255) #設置顏色模式爲RGB整數模式
scr.bgcolor("black") #設置屏幕背景顏色爲黑色
tur = turtle.Turtle() #生成一個畫筆對象
tur.speed(10) #設置畫筆移動速度,範圍爲0~10之間,取整數,數字越大表明速度越快
tur.goto(0,0) #將畫筆移動到座標爲(0,0)的位置
tur.pensize(2) #設置畫筆的寬度爲2
tur.ht() #隱藏畫筆,使得做複雜繪圖時加快速度
for i in range(500):
# turtle.color()方法返回或設置pencolor和fillcolor,允許多種輸入格式,包括0到3個參數
#randrange() 方法返回指定遞增基數集合中的一個隨機數,基數缺省值爲1
tur.color(random.randrange(256),random.randrange(256),random.randrange(256))
#random.gauss(a,b) 表示均值爲a且標準偏差爲b的高斯分佈
#round( x [, n] )方法返回浮點數x的四捨五入值,n爲小數點後有效位數
tur.goto(round(random.gauss(0,150),0),round(random.gauss(0,150),0))
x = tur.xcor() #返回畫筆的x座標
y = tur.ycor() #返回畫筆的y座標
for j in range(25):
z = round(random.gauss(0,5), 0)
a = round(random.gauss(0,5), 0)
tur.color(random.randrange(256),random.randrange(256),random.randrange(256))
tur.goto(x + z, y + a) #將畫筆移動到對應座標位置
tur.goto(z,a) #將畫筆移動到座標爲(z,a)的位置
turtle.update() #執行TurtleScreen更新,在跟蹤器tracer關閉時調用。
scr.exitonclick() #鼠標點擊屏幕時退出(通過綁定bye()方法實現)
看着代碼很多,其實關鍵的方法只有幾個,重要的是邏輯,我們要把枯燥的方法巧妙地拼接起來,進而構造出我們的目標圖像,在這其中有幾個方法還是說一下吧:
1.turtle.tracer方法
我們設置了(0,0),既不需要延遲,如果大家對這個感興趣可以設置其他值試驗一下~~
2.random.randrange方法
其全貌爲random.randrange ([start,] stop [,step]):
- start -- 指定範圍內的開始值,包含在範圍內
- stop -- 指定範圍內的結束值,不包含在範圍內
- step -- 指定遞增基數
其他的方法基本上在註釋中都已說明,詳細信息可以查詢官網說明,我們後續還會進一步探究……
看下效果吧:
———————如果本篇內容對你有一點點幫助,請點個贊或者收藏關注一下,讓我們一起努力————————