python动态圣诞下雪图

运行图片

代码

python 复制代码
import pygame
import random

# 初始化Pygame
pygame.init()

# 创建窗口
width, height = 800, 600
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption('Christmas Tree')

# 定义颜色
GREEN = (34, 139, 34)
RED = (255, 0, 0)
WHITE = (255, 255, 255)


# 绘制圣诞树
def draw_christmas_tree():
    triangle_height = 300
    triangle_width = 200

    # 绘制树干
    pygame.draw.rect(screen, pygame.Color('brown'), (width // 2 - 25, height - 200, 50, 200))

    # 绘制树冠
    for i in range(triangle_height):
        pygame.draw.polygon(screen, GREEN, [(width // 2 - triangle_width // 2 - i, height - 50 - i),
                                            (width // 2 + triangle_width // 2 + i, height - 50 - i),
                                            (width // 2, height - 50 - i - triangle_height)])


# 随机生成雪花
def generate_snowflakes():
    snowflakes = []
    for _ in range(100):
        x = random.randint(0, width)
        y = random.randint(0, height)
        size = random.randint(1, 5)
        snowflakes.append((x, y, size))
    return snowflakes


# 绘制雪花
def draw_snowflakes(snowflakes):
    for flake in snowflakes:
        pygame.draw.circle(screen, WHITE, (flake[0], flake[1]), flake[2])


# 绘制圣诞老人
def draw_santa():
    santa_image = pygame.Surface((120, 120), pygame.SRCALPHA)

    # 头部和身体
    pygame.draw.circle(santa_image, RED, (60, 60), 50)
    pygame.draw.polygon(santa_image, RED, [(0, 60), (120, 60), (60, 120)])

    # 眼睛和嘴巴
    pygame.draw.circle(santa_image, WHITE, (45, 45), 10)
    pygame.draw.circle(santa_image, WHITE, (75, 45), 10)
    pygame.draw.arc(santa_image, WHITE, (30, 45, 60, 60), 3.14 / 2, 3 * 3.14 / 2, 3)

    # 鼻子
    pygame.draw.polygon(santa_image, pygame.Color('orange'), [(60, 50), (70, 70), (50, 70)])

    # 胡须
    pygame.draw.line(santa_image, WHITE, (55, 85), (20, 90), 2)
    pygame.draw.line(santa_image, WHITE, (65, 85), (100, 90), 2)

    # 帽子
    pygame.draw.polygon(santa_image, RED, [(30, 0), (90, 0), (60, 60)])

    screen.blit(santa_image, (width // 2 - 60, height - 200 - 120))


# 游戏主循环
running = True
clock = pygame.time.Clock()
snowflakes = generate_snowflakes()

while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    screen.fill((0, 0, 0))  # 清空屏幕

    draw_christmas_tree()
    draw_santa()
    draw_snowflakes(snowflakes)

    # 雪花下落
    for i in range(len(snowflakes)):
        x, y, size = snowflakes[i]
        snowflakes[i] = (x, y + size, size)
        if y + size > height:
            snowflakes[i] = (random.randint(0, width), 0, size)

    pygame.display.flip()  # 刷新屏幕
    clock.tick(30)  # 控制帧率

# 退出游戏
pygame.quit()
相关推荐
ServBay1 小时前
9 个 Python 第三方库推荐,不用 AI 都好像多出一个团队
后端·python
用户8356290780511 小时前
如何使用 Python 添加和管理 Excel 批注(完整示例)
后端·python
用户8356290780511 小时前
使用 Python 管理 Excel 工作表:创建、复制、删除与重命名
后端·python
荣码10 小时前
LangGraph多Agent协作:3个Agent干活比1个强,但我踩了4个坑
java·python
用户8356290780511 天前
Python 操作 PDF 附件:添加、查看与管理指南
后端·python
宇宙之一粟1 天前
乐企版式文件生成平台
java·后端·python
学测绘的小杨2 天前
CompassFusion:一个从 GNSS 到 GNSS/INS 组合导航的独立工程包
python
zzzzzz3102 天前
当产品经理说这个很简单:我用Python自动化处理奇葩需求的实战指南
python·pycharm·产品经理
雪隐2 天前
个人电脑玩AI-06让5060 Ti给你打工——不光能画画,Qwen3-TTS还能学人说话,连我老板都信了!
人工智能·后端·python
兵慌码乱3 天前
面向桌面端的资产管理系统分层架构设计与核心模块实现
python·系统架构·sqlite·pyqt5·数据库设计·桌面应用开发·mvc架构