import pygame import random import sys # 初始化Pygame(新增音频初始化) pygame.init() # 初始化音频混合器(处理BGM播放) pygame.mixer.init() # 1. 窗口设置 WIDTH, HEIGHT = 800, 600 # 窗口宽高 screen = pygame.display.set_mode((WIDTH, HEIGHT)) pygame.display.set_caption("我期待的不是雪 而是有你的冬天") # 2. 背景音乐播放(新增核心代码) def play_bgm(): try: # 加载背景音乐文件(请确保snow_bgm.mp3和代码同目录) pygame.mixer.music.load("./我期待的不是雪.mp3") # 设置音量(0.0-1.0,0.5是50%音量,避免过大) pygame.mixer.music.set_volume(0.5) # 播放BGM:参数-1表示无限循环,0表示只播放1次 pygame.mixer.music.play(-1) print("BGM播放成功!") except Exception as e: # 捕获音频文件不存在/格式错误等异常,避免程序崩溃 print(f"BGM播放失败:{e}") print("请检查音频文件是否存在、格式是否为MP3/WAV,且文件名正确") # 调用BGM播放函数 play_bgm() # 3. 雪花相关设置 SNOWFLAKE_COUNT = 150 # 雪花数量 snowflakes = [] # 初始化雪花列表 for _ in range(SNOWFLAKE_COUNT): x = random.randint(0, WIDTH) y = random.randint(-HEIGHT, 0) size = random.randint(2, 5) speed = random.uniform(1, 3) snowflakes.append([x, y, size, speed]) # 4. 主循环设置 clock = pygame.time.Clock() running = True # 主游戏循环 while running: clock.tick(60) # 处理事件(新增:按ESC键可暂停/继续BGM) for event in pygame.event.get(): if event.type == pygame.QUIT: running = False pygame.quit() sys.exit() # 按ESC键切换BGM播放/暂停状态 if event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: if pygame.mixer.music.get_busy(): pygame.mixer.music.pause() print("BGM已暂停") else: pygame.mixer.music.unpause() print("BGM已继续") # 填充背景色 screen.fill((20, 20, 30)) # 更新并绘制雪花 for i in range(len(snowflakes)): x, y, size, speed = snowflakes[i] # 新增:雪花轻微左右摇摆,更真实 x += random.uniform(-0.15, 0.15) snowflakes[i][0] = x y += speed snowflakes[i][1] = y if y > HEIGHT: snowflakes[i][0] = random.randint(0, WIDTH) snowflakes[i][1] = random.randint(-20, -5) # 绘制雪花(轻微透明,更逼真) snow_surface = pygame.Surface((size*2, size*2), pygame.SRCALPHA) pygame.draw.circle(snow_surface, (255, 255, 255, 200), (size, size), size) screen.blit(snow_surface, (int(x-size), int(y-size))) pygame.display.flip() # 退出前停止BGM pygame.mixer.music.stop() pygame.quit() sys.exit() # 打包 # pip install pyinstaller # pyinstaller -F -w main.py