分形樹的繪製——python第二課

1、繪製五角星

  1. 引入turtle
  2.  

 

'''
    做者:蘭蘭蘭
    功能:五角星繪製
    版本:1.0
    日期:02/09/2018

'''
import turtle

def main ():
    '''
        主函數
    '''
    i = 1
    while i <= 5:
        turtle.forward(50)
        turtle.right(144)
        i = i+1
    turtle.exitonclick()


if __name__ == "__main__":
    main()函數

  1. Turtle庫函數

   Turtle.forward(x)   向前劃xspa

   Turtle.backward(x)遞歸

   Turtle.right(x)      向右轉x°字符串

   Turtle.left(x)it

   Turtle.exitonclick()  點擊關閉畫布import

   Turtle.penup()     擡起畫筆cli

   Turtle.pendown()   放下畫筆im

   Turtle.pencolor(‘s’)  畫筆顏色,參數爲字符串img

 

2、重複繪製不一樣大小的五角星(遞歸函數)

  1. 使用迭代函數

 

'''
    做者:蘭蘭蘭
    功能:五角星繪製
    版本:2.0
    日期:02/10/2018
    2.0新增功能:用迭代函數繪製重複不一樣大小的五角星

'''
import turtle

def draw_pentagon_pentagram(size):
    # 繪製五角星
    # 計數器
    i = 1
    while i <= 5:
        turtle.forward(size)
        turtle.right(144)
        i = i + 1
    if size <= 200:
        size += 20
        draw_pentagon_pentagram(size)
def main ():
    '''
        主函數
    '''
    turtle.penup()
    turtle.backward(100)
    turtle.pendown()
    turtle.pensize(1.5)
    turtle.pencolor('yellow')

    size = 50
    #繪製五角星
    draw_pentagon_pentagram(size)

    turtle.exitonclick()


if __name__ == "__main__":
    main()while

 

 

  1. 遞歸函數

在函數中調用自己的方式,達到終止條件,各層逐層結束運算

 

 

3、分形樹的繪製

  1. 使用遞歸函數繪製分形樹

   

 

'''
    做者:蘭蘭蘭
    功能:利用遞歸函數分形樹繪製
    版本:1.0
    日期:02/11/2018
'''

import turtle

def draw_branch(branch_length):
    '''
        繪製分形樹
    '''

    if branch_length >=5:
        # 設置樹梢爲綠色,樹幹爲棕色
        if (branch_length-15) <= 5:
            turtle.pencolor('green')
        else:
            turtle.pencolor('brown')
        #繪製右側樹枝
        turtle.pendown()
        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.penup()
        turtle.rt(20)
        print('向右轉20度')
        turtle.backward(branch_length)
        print('向後',branch_length)


def main():
    '''
        主函數

    '''

    #畫筆粗細
    turtle.pensize(2)
    #初始位置
    turtle.left(90)
    turtle.penup()
    turtle.backward(100)
    turtle.pendown()
    #調用函數繪製分形樹
    draw_branch(100)

    turtle.exitonclick()

if __name__ == '__main__':    main()

相關文章
相關標籤/搜索