【基础】学习笔记6-python3 Turtle库_实操进阶3


操作实例-进阶3

樱花树

代码<一>:

# 樱花:动态产生

import turtle ast

importrandom

importtime


def SetTurtle():

    # t.setup(800, 680)  # 定义窗口大小

    t.screensize(bg='wheat')  # 定义画布,背景小麦色

    t.color('sienna')  # 画笔 赭(zhě)色

    # t.getscreen().tracer(5, 0)

    t.tracer(5)  # 0或False,表示一次做好,1表示按正常速度进行


    t.mode('logo')  # 朝北

t.penup()

    t.back(150)  # 设置起点

t.pendown()


def Tree(length):  # 树干,length为初始长度

    time.sleep(0.0005)

    if length > 3:

        # =====枝干颜色和宽度=========

        if length <= 12:

            if length < 8:

                t.pensize(length / 3)

            else:

                t.pensize(length / 2)


            if random.randint(0, 2) == 0:  # 随机产生0-2范围的整数

                t.color('snow')

            else:

                t.color('lightcoral')  # 淡珊瑚色

        else:

            t.color('sienna')

            t.pensize(length/10)


        # ======枝干的运动轨迹=========

t.forward(length)

        a = 1.5* random.random()

        t.right(20* a)

        b = 1.5* random.random()

        Tree(length - 10* b)

        t.left(40* a)

        Tree(length - 10* b)

        t.right(20* a)

t.penup()

t.back(length)

t.pendown()

t.hideturtle()


def Petal(num):  # 定义花瓣,num为花瓣数

    for i in range(num):

        a = 200 - 400 * random.random()  # 花瓣的左右范围在-200~200,随机

        b = 10 - 20 * random.random()  # 花瓣上下范围在-10~10,随机

t.penup()

t.fd(b)

        t.left(90)

t.fd(a)

t.pendown()

        t.color('lightcoral')

        t.dot(5)  # 花瓣大小

t.penup()

t.back(a)

        t.right(90)

t.back(b)


if __name__ == "__main__":

SetTurtle()

    Tree(60)  # 60为第一步的长度

    Petal(200)  # 200为花瓣数目

t.Screen().exitonclick()

    # t.mainloop()

结果如下:



代码<二>:

# 樱花:有设置阴影效果

import turtle ast

importmath

importrandom


def SetTurtle():

    # t.colormode(255)  # 采用0-255的RGB值时需要这项设置,0-1的RGB不需要

    #t.setup(800, 600,400, 200)

    t.screensize(1000, 800)

    t.bgcolor(0.5, 0.5, 0.5)  # 背景色

    # t.tracer(5)

    t.left(90)

t.penup()

    t.goto(-100, -300)  # 设置起点

t.pendown()


def Tree(n, l):  # 设置树:n为最长枝干,l为初始移动长度

t.pendown()

    # 阴影效果

    c = math.cos(math.radians(t.heading()+45))/8+0.25  #

t.pencolor(c, c, c)

    t.pensize(n / 3)

t.fd(l)


    if n > 0:  # 画枝干

        left_t = random.random() * 15 + 10  # 左分支偏转角度

        right_t = random.random() * 15 + 10  # 右分支偏转角度

        next_l = l * (random.random() * 0.25+0.7)  # 下一个分支的长度

        # 右转一定角度,画右分支

t.right(right_t)

        Tree(n - 1, next_l)

        # 左转一定角度,画左分支

t.left(right_t + left_t)

        Tree(n - 1, next_l)

        # 回位

t.right(left_t)

    else:  # 画叶子

        t.right(90)

        n = math.cos(math.radians(t.heading()-45))/4+0.5

        t.pencolor(n, n * 0.8, n * 0.8)

        t.circle(3)

        t.left(90)

        # 添加0.3倍的飘落叶子

        if random.random() > 0.7:

t.penup()

            # 飘落

h = t.heading()

            an = -40 + random.random() * 40

t.setheading(an)

            dis = int(800 * random.random() * 0.5+400*

                      random.random() * 0.3+200 * random.random() * 0.2)

t.fd(dis)

t.setheading(h)

            # 画叶子

t.pendown()

            t.right(90)

            n = math.cos(math.radians(t.heading()-45))/4+0.5

            t.pencolor(n * 0.5+0.5, 0.4+0.4 * n, 0.4+0.4* n)

            t.circle(2)

            t.left(90)

t.penup()

            # 返回

h = t.heading()

t.setheading(an)

t.backward(dis)

t.setheading(h)

t.penup()

t.back(l)


if __name__ == "__main__":

    t.tracer(False)

SetTurtle()

    Tree(12, 100)  # 12为最长枝干,100为初始移动长度

    t.tracer(True)

t.mainloop()

结果如下:



代码<三>:

# 樱花树:在CherryTree-2变更树叶颜色,并去掉飘落的树叶

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 / 4)

forward(l)

    if n > 0:

        b = random() * 15 + 10

        c = random() * 15 + 10

        d = l * (random() * 0.35 + 0.6)

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

pencolor(n, n, n)

        circle(2)

        left(90)

pu()

backward(l)


bgcolor(0.5, 0.5, 0.5)

ht()

speed(0)

tracer(0, 0)

left(90)

pu()

backward(300)

tree(13, 100)

done()

结果如下:


你可能感兴趣的:(【基础】学习笔记6-python3 Turtle库_实操进阶3)