使用turtle庫繪製分形樹 太陽花 五角星

2021-09-26 23:13:59 字數 4263 閱讀 4897

1.太陽花的繪製

import turtle

turtle.pencolor('red') # 畫筆顏色

turtle.fillcolor('yellow') # 填充顏色

turtle.begin_fill() # 準備開始填充圖形

for _ in range(50): # 畫筆畫了50次

turtle.forward(200)

turtle.left(170)

turtle.end_fill() # 填充完畢

turtle.mainloop() # 啟動事件迴圈

2.五角星的繪製(1)簡單的五角星繪製,乙個庫,乙個主函式,乙個while迴圈

import turtle

def main():

count = 1

while count <= 5:

turtle.forward(100)

turtle.right(144)

count = count + 1

turtle.exitonclick()

if __name__ == '__main__':

main()

效果:

(2)重疊五角星

比(1)多了迴圈,加入迴圈操作可以繪製重複不同大小的圖形

import turtle

def draw_recursive_pentagram(size): #函式的定義

'''迭代繪製五角星

'''# 計數器

count = 1

#開始迴圈

while count <= 5:

turtle.forward(size)

turtle.right(144)

count += 1

# 五角星繪製完成,更新引數

size += 10 # size = size + 10

if size <= 100:

draw_recursive_pentagram(size) # 函式中呼叫函式自身的方式稱為**遞迴**

def main():

'''主函式

'''turtle.penup()

turtle.backward(200)

turtle.pendown()

turtle.pensize(2)

turtle.pencolor('red')

size = 50

draw_recursive_pentagram(size)

turtle.exitonclick()

if __name__ == '__main__': # 呼叫主函式

main()

(2)填充五角星

import turtle

import time

turtle.pensize(5)

turtle.pencolor('yellow')

turtle.fillcolor('red')

turtle.begin_fill()

for _ in range(5):

turtle.forward(200)

turtle.right(144)

turtle.end_fill()

time.sleep(2)

#繪製done

turtle.penup() # 起筆,離開五角星位置,開始畫done

turtle.goto(-150, -120) # done距離五角星中心的位置

turtle.color('violet') # 藍紫色

turtle.write('done', font=('arial', 40, 'normal')) # 寫文字,依次為文字內容、字型、字型大小、型別。

turtle.exitonclick()

效果:

3.繪製分形樹

(1)簡單的,利用遞迴函式繪製分形樹

import turtle

def draw_branch(branch_length):

'''繪製分形樹

'''if branch_length > 3:

# 繪製右側樹枝

turtle.forward(branch_length)

print('向前', branch_length)

turtle.right(20)

print('右轉 20')

draw_branch(branch_length - 15)

# 繪製左側樹枝

turtle.left(40)

print('左轉 40')

draw_branch(branch_length - 15)

# 返回之前的樹枝

turtle.right(20)

print('右轉 20')

turtle.backward(branch_length)

print('向後', branch_length)

def main(): #主函式#

turtle.penup()

turtle.left(90)

turtle.backward(180)

turtle.pendown()

branch_length = 120

draw_branch(branch_length)

turtle.exitonclick()

if __name__ == '__main__': # 呼叫主函式

main()

效果:

(2)帶顏色的分形樹

import turtle as tl  # 以下需要呼叫turtle庫函式都採用簡寫tl

def draw_smalltree(tree_length, tree_angle):

'''繪製分形樹函式

'''if tree_length >= 3:

tl.forward(tree_length) # 往前畫

tl.right(tree_angle)

draw_smalltree(tree_length - 10, tree_angle) # 畫下一枝,直到畫到樹長小於3

tl.left(2 * tree_angle) # 轉向畫左

draw_smalltree(tree_length - 10, tree_angle) # 直到畫到樹長小於3

tl.rt(tree_angle) # 轉到正向上的方向,然後回溯到上一層

if tree_length <= 30: # 樹枝長小於30,可以當做樹葉了,樹葉部分為綠色

tl.pencolor('green')

if tree_length > 30:

tl.pencolor('brown') # 樹幹部分為棕色

tl.backward(tree_length) # 往回畫,回溯到上一層

def main():

tl.penup

tl.left(90) # 因為樹是往上的,所以先把方向轉左

tl.backward(250) # 把起點放到底部

tl.pendown

tree_length = 100 # 設定樹長

tree_angle = 20 # 樹枝分叉角度

draw_smalltree(tree_length, tree_angle) # 呼叫draw_smalltree函式

tl.exitonclick()

if __name__ == '__main__':

main()

效果:

Turtle繪製分形樹

import turtle def draw branch branch length if branch length 5 限定繪製的樹枝 包括樹幹 樹枝和樹葉 長度至少大於5 if branch length 20 如果長度小於20,即可判定是樹葉,繪製成綠色 turtle.color gree...

Python使用Turtle繪製分形樹

2020 02 25 python使用turtle繪製分形樹 效果如下 3功能 利用遞迴繪製分型樹 4版本 1.0 5日期 2020 02 25 6 78 import turtle910 defdraw branch branch length 11 12繪製分型樹 13 param branch...

Python繪製分形樹 二

首先我們來分析一下,繪製分形樹大概分以下4個部分 繪製右側樹枝 返回樹枝節點 繪製左側樹枝 返回樹枝節點 根據以上4步,寫乙個遞迴函式,完成我們的需求 def draw branch branch length 繪製樹枝 if branch length 5 turtle.forward branc...