103
main.py
Normal file
103
main.py
Normal file
@@ -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
|
||||
Reference in New Issue
Block a user