python3D圣诞树

复制代码
import pygame
import math
from pygame.locals import *

# 初始化Pygame
pygame.init()

# 设置屏幕尺寸和标题
width, height = 800, 600
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption('3D 圣诞树')

# 设置颜色
GREEN = (34, 139, 34)
BROWN = (139, 69, 19)
RED = (255, 0, 0)
YELLOW = (255, 255, 0)
WHITE = (255, 255, 255)

# 圣诞树参数
tree_height = 200
tree_width = 100
levels = 5
level_height = tree_height / levels
level_width = tree_width / levels

# 旋转角度
angle = 0

# 主循环
running = True
while running:
    screen.fill((0, 0, 0))

    # 处理事件
    for event in pygame.event.get():
        if event.type == QUIT:
            running = False

    # 创建3D圣诞树
    for i in range(levels):
        # 计算每一层的宽度和高度
        current_width = tree_width - i * level_width
        current_height = level_height

        # 计算每一层的四个顶点
        x1 = -current_width / 2
        y1 = -current_height * i
        x2 = current_width / 2
        y2 = y1

        x3 = 0
        y3 = current_height * (i + 1)

        # 绘制三角形
        pygame.draw.polygon(screen, GREEN, [(x1, y1), (x2, y2), (x3, y3)])

        # 添加装饰灯
        if i % 2 == 0:
            pygame.draw.circle(screen, RED, (int(x1 + current_width / 4), int(y1 + current_height / 2)), 5)
            pygame.draw.circle(screen, YELLOW, (int(x2 - current_width / 4), int(y2 + current_height / 2)), 5)

    # 绘制树干
    pygame.draw.rect(screen, BROWN, (-20, tree_height - 20, 40, 20))

    # 旋转效果
    angle += 0.01
    if angle > 2 * math.pi:
        angle = 0

    # 更新屏幕
    pygame.display.flip()

# 退出Pygame
pygame.quit()
相关推荐
数据小爬虫@5 分钟前
Python爬虫抓取数据,有哪些常见的问题?
开发语言·爬虫·python
Byron Loong18 分钟前
Python+OpenCV系列:【打卡系统-工具模块设计】工具模块深度揭秘,考勤智能化的核心秘籍!
python·opencv·webpack
漫无目的行走的月亮24 分钟前
基于Python Scrapy的豆瓣Top250电影爬虫程序
爬虫·python·scrapy
这里有鱼汤24 分钟前
数据分析从入门到放飞:Python三大金刚来助阵!
后端·python
算法哥1 小时前
解决Jupyter默认打开C盘的问题
ide·python·jupyter
小墨&晓末1 小时前
【PythonGui实战】自动摇号小程序
python·算法·小程序·系统安全
海棠AI实验室1 小时前
机器学习基础算法 (一)-线性回归
人工智能·python·机器学习
是我知白哒1 小时前
lxml提取某个外层标签里的所有文本
前端·爬虫·python
测试老哥2 小时前
Python自动化测试图片比对算法
自动化测试·软件测试·python·测试工具·程序人生·职场和发展·测试用例
爱数学的程序猿2 小时前
Python入门:1.Python介绍
开发语言·python