Python实现银杏树绘制与效果展示

银杏树,因其形态优美、叶片独特而被人们喜爱。银杏的叶子呈扇形,秋天时叶片呈现出金黄的色彩,成为秋季的代表之一。今天,我们将使用Python的turtle库来绘制一棵具有银杏树🍂特色的树。 通过编写Python代码,我们将模拟银杏树的树干、树枝、叶子等细节,最终呈现出一棵生动的银杏树🍂。
在这里插入图片描述

我们将利用Python的turtle库来绘制银杏树🍂。首先,我们会画出树干和树枝,然后用颜色填充银杏的扇形叶子,使其看起来更加自然。

🔥以下是实现银杏树🍂的完整代码:

from turtle import *
from random import *
from math import *
def ginkgo_tree(n, l):
    pd()  # 下笔
    # 阴影效果,使用深黄色系,优化颜色计算
    t = (cos(radians(heading() + 45)) / 8 + 0.3) * 0.8
    pencolor(t, t * 0.7, 0)  # 让颜色更接近银杏叶的颜色
    if n > 5:  # 当 n 大于 5 时,使树干更粗
        pensize(max(n / 2, 5))  
    else:
        pensize(max(n / 3, 1))  # 确保树枝有最小粗细
    forward(l)  # 画树枝

    if n > 0:
        b = random() * 20 + 5  # 调整分支偏转角度范围
        c = random() * 20 + 5
        d = l * (random() * 0.3 + 0.6)  # 调整下一个分支的长度范围
        # 右转一定角度, 画右分支
        right(b)
        ginkgo_tree(n - 1, d)
        # 左转一定角度,画左分支
        left(b + c)
        ginkgo_tree(n - 1, d)
        # 转回来
        right(c)
    else:
        # 画叶子
        right(90)
        # 银杏叶子使用黄色,更鲜明的黄色
        pencolor("#FFD700")
        # 绘制扇形的银杏叶,优化叶子形状
        begin_fill()
        fillcolor("#FFD700")
        for i in range(3):
            circle(8, 120)  # 增大叶子尺寸
            left(120)
        end_fill()
        left(90)
        # 添加 0.3 倍的飘落叶子
        if (random() > 0.7):
            pu()
            # 飘落
            t = heading()
            an = -45 + random() * 90  # 调整飘落角度范围
            setheading(an)
            dis = int(800 * random() * 0.5 + 400 * random() * 0.3 + 200 * random() * 0.2)
            forward(dis)
            setheading(t)
            # 画叶子
            pd()
            right(90)
            # 飘落叶子的颜色稍淡
            pencolor("#FFEC8B")  # 更淡的黄色
            # 绘制飘落的扇形叶子,优化形状
            begin_fill()
            for i in range(3):
                circle(5, 120)  # 调整飘落叶子尺寸
                left(120)
            end_fill()
            left(90)
            pu()
            # 返回
            t = heading()
            setheading(an)
            backward(dis)
            setheading(t)
    pu()
    backward(l)  # 退回
bgcolor("white")  # 把背景色换成天空蓝
ht()  # 隐藏 turtle
speed(0)  # 速度 1-10 渐进,0 最快
tracer(0, 0)
pu()  # 抬笔
backward(50)
left(90)  # 左转 90 度
pu()  # 抬笔
backward(300)  # 后退 300
ginkgo_tree(12, 100)  # 递归 7 层
done()

🔥效果图如下:
在这里插入图片描述

Python中,我们可以利用pygame库创建一个简单的动画效果模拟飘落的银杏叶。首先,确保已经安装了pygame模块,如果没有,可以使用pip install pygame命令安装。 下面是一个基础的示例代码: ```python import pygame import random # 初始化Pygame pygame.init() # 设置窗口大小 window_width = 800 window_height = 600 screen = pygame.display.set_mode((window_width, window_height)) pygame.display.set_caption("飘落的银杏叶") # 银杏叶类 class GinkgoLeaf: def __init__(self, x, y): self.image = pygame.Surface([50, 40]) # 叶片尺寸 self.image.fill((200, 170, 0)) # 黄色背景 self.rect = self.image.get_rect(center=(x, y)) self.speed = [random.uniform(-3, -1), random.uniform(1, 3)] # 每片叶子的随机速度 def update(self): self.rect.move_ip(self.speed) if self.rect.top < 0 or self.rect.left > window_width or self.rect.right < 0: self.kill() # 当叶子离开屏幕时销毁 def draw(self): screen.blit(self.image, self.rect) # 创建一片叶子并添加到屏幕 leaf = GinkgoLeaf(window_width // 2, window_height - 50) all_sprites = pygame.sprite.Group() all_sprites.add(leaf) # 游戏主循环 running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False screen.fill((0, 0, 0)) # 清屏黑色 all_sprites.update() # 更新所有叶子的位置 all_sprites.draw(screen) # 绘制叶子 pygame.display.flip() pygame.time.delay(10) # 控制帧率 # 清理资源 pygame.quit() ``` 在这个例子中,我们创建了一个`GinkgoLeaf`类,它有位置、形状和运动属性。我们在主循环中不断更新叶子位置,如果叶子超出边界,就将其从游戏中移除。每帧都清除屏幕并重新绘制叶子。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值