首頁 > 軟體

用Python Turtle畫棵櫻花樹送給自己

2022-02-16 13:01:23

最近發生了很多事情,工作不開心,愛情無果而終,身邊的小夥伴陸陸續續離職。雖然都不是會一下子擊垮自己的事情,但是積攢起來,還是會有突然感到疲憊和倦怠的時候,有一種不知道下一步要走向哪裡的無力感。

在這個城市留下了很多的回憶,但是身邊的人一個個離開,走到現在,似乎沒有太多留戀的了,也沒想好未來要去哪裡。自己是一個始終需要新鮮感的人,在這裡停留了太久,大概到了該說再見的時候了吧。

那麼,用一個不熟悉的語言,畫棵櫻花樹送給自己吧,程式碼也可以很浪漫不是嗎。520剛剛過了,沒有愛情,自己也要好好愛自己才對。

一. 繪製步驟

1. 環境安裝

可以參考之前的部落格:

Python爬蟲實現抓取電影網站資訊併入庫

2. 圖片美化

之前沒怎麼用過 Python,就對別人的程式碼進行分析和效果優化好啦,順便學習一下。

這個是原來的效果圖,有點灰濛濛的,微微改動,讓它明媚一點。

修改之後的程式碼:

from turtle import *
from random import *
from math import *

def tree(n,l):
    pd()#下筆
    #陰影效果
    t = cos(radians(heading()+45))/8+0.25
    pencolor(t,t,t)
    pensize(n/3)
    forward(l)#畫樹枝

    if n>0:
        b = random()*15+10 #右分支偏轉角度
        c = random()*15+10 #左分支偏轉角度
        d = l*(random()*0.25+0.7) #下一個分支的長度
        #右轉一定角度,畫右分支
        right(b)
        tree(n-1,d)
        #左轉一定角度,畫左分支
        left(b+c)
        tree(n-1,d)
        #轉回來
        right(c)
    else:
        #畫葉子
        right(90)
        n=cos(radians(heading()-45))/4+0.5
        ran=random()
        #這裡相比於原來隨機新增了填充的圓圈,讓櫻花葉子看起來更多一點
        if(ran>0.7):
            begin_fill()
            circle(3)
            fillcolor('pink')
        #把原來隨機生成的葉子換成了統一的粉色
        pencolor("pink")
        circle(3)
        if(ran>0.7):
            end_fill()
        left(90)
        #新增0.3倍的飄落葉子
        if(random()>0.7):
            pu()
            #飄落
            t = heading()
            an = -40 +random()*40
            setheading(an)
            dis = int(800*random()*0.5 + 400*random()*0.3 + 200*random()*0.2)
            forward(dis)
            setheading(t)
            #畫葉子
            pd()
            right(90)
            n = cos(radians(heading()-45))/4+0.5
            pencolor(n*0.5+0.5,0.4+n*0.4,0.4+n*0.4)
            circle(2)
            left(90)
            pu()
            #返回
            t=heading()
            setheading(an)
            backward(dis)
            setheading(t)
    pu()
    backward(l)#退回
    
bgcolor(0.956,0.9255,0.9882)#設定背景色(把灰色換成淡紫色)
ht()#隱藏turtle
speed(0)#速度 1-10漸進,0 最快
tracer(0,0)
pu()#擡筆
backward(50)
left(90)#左轉90度
pu()#擡筆
backward(300)#後退300
tree(12,100)#遞迴7層
done()

之後的效果溫暖一點,喜歡這種更有溫度的色調:

二. 技術學習

1. turtle 簡介

櫻花樹的繪製效果是通過 Python 中的 turtle 來實現的,Python 的強大之處在於有許多很強大的庫,turtle就是其中之一,是 Python 自帶的一個庫。

2. turtle 繪圖的基礎知識

turtle庫繪製原理:有一隻海龜在表單正中心,在畫布上游走,走過的軌跡形成了繪製的圖形,海龜由程式控制,可以自由改變顏色、方向寬度等。

(1) . turtle 繪圖表單

setup用來設定表單大小,後兩個引數為非必選引數;

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

(2) . turtle 的座標體系

畫布上,預設有一個座標原點為畫布中心的座標軸,座標原點上有一隻面朝x軸正方向的小烏龜。

這裡我們描述小烏龜時使用了兩個詞語:座標原點(位置),面朝x軸正方向(方向), turtle 繪圖中,就是使用位置方向描述小烏龜(畫筆)的狀態的。

(3) . turtle 畫筆屬性

(4) . turtle 繪圖命令

運動命令

控制命令

全域性控制命令

雖然沒有在原來的基礎上改動太多的程式碼,只是簡單的給櫻花樹換了個風格,但是其實也做了很多的嘗試和調整,也學到了怎麼使用 turtle 。

本篇部落格參考了以下部落格的程式碼:使用python圖形模組turtle庫繪製櫻花、玫瑰、聖誕樹程式碼範例

到此這篇關於用Python Turtle畫棵櫻花樹送給自己的文章就介紹到這了,更多相關Python Turtle 櫻花樹內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com