pygame利用音乐结束事件循环播放多首音乐.py

"""利用音乐结束事件循环播放多首音乐.py ,本程序在播放完一首音乐后,会自动触发音乐结束事件,从而播放下一首音乐,在游戏中不止播放一首背景音乐时非常需要这段代码"""
import pygame
 
# 定义颜色变量
black = (0, 0, 0)
white = (255, 255, 255)
green = (0, 255, 0)
red = (255, 0, 0)
 
pygame.init()
 
# 设置屏幕宽度和高度
size = (700, 500)
screen = pygame.display.set_mode(size)
 
pygame.display.set_caption("利用事件循环播放多首音乐")
 
# 此变量用来当单击窗口关闭按钮时退出while循环
done = False
 
# 控制每秒显示的帧数的对象
clock = pygame.time.Clock()

music_list = ['纯音乐.mp3','滴水.mp3','海底小纵队.mp3','欢快6搬陶俑.mp3']
music_amounts = len(music_list)
music_index = 0
# 播放音乐,设置音乐结束事件
pygame.mixer.music.load(music_list[music_index])
pygame.mixer.music.set_endevent(pygame.constants.USEREVENT) # 音乐结束事件
pygame.mixer.music.play()
 
# -------- 主循环 -----------
while not done:
     
    for event in pygame.event.get():  # 迭代每个事件
        if event.type == pygame.QUIT:  # 如果单击了关闭按钮
            done = True  # 此标题为True,进而while循环会退出
        elif event.type == pygame.constants.USEREVENT: 
            # 当音乐播放完毕后会触发此事件,这时可以播放列表中的下一首音乐。
            music_index +=1
            music_index = music_index % music_amounts
            pygame.mixer.music.load(music_list[music_index])
            pygame.mixer.music.play()
 
        # 这里可以处理其它事件
 
    # 这里可以处理游戏逻辑,从而更新游戏中角色的坐标
 
    # 背景为白色,然后可以在上面重画其它角色
    screen.fill(white)
 
    # 这里的代码可以是重画所有角色
    
    pygame.display.flip() # 刷新显示
 
    # 设置fps为60
    clock.tick(60)
 
# 安全退出到IDLE
pygame.quit()