commit ce0c0c876891eaa5b9f104deea2d4a942362463a Author: insArvin Date: Mon Dec 29 12:03:30 2025 +0800 添加 main.py Signed-off-by: insArvin diff --git a/main.py b/main.py new file mode 100644 index 0000000..cd30273 --- /dev/null +++ b/main.py @@ -0,0 +1,103 @@ +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 \ No newline at end of file