【问题标题】:randomize background music for pygame project为pygame项目随机化背景音乐
【发布时间】:2020-07-30 11:43:06
【问题描述】:

我正在尝试在这个非常基本的太空入侵者游戏中随机播放我的背景音乐。我只是希望它在游戏开始或重新启动时从 5 首歌曲列表中随机播放一首歌曲(我尚未添加重新启动按钮)我在终端中没有收到任何错误,但也没有任何播放。

# background music
play_list = []
play_list.append("./toonz/toon1.mp3")
play_list.append("./toonz/toon2.mp3")
play_list.append("./toonz/toon3.mp3")
play_list.append("./toonz/toon4.mp3")
play_list.append("./toonz/toon5.mp3")

def play_toonz(play_list):
    random.shuffle(play_list)
    pygame.mixer.music.load(play_list[songNumber])
    pygame.mixer.music.play(-1)

    for num, song in enumerate(play_list):
        if num == songNumber:
            continue
        mixer.music.queue(song)

认为我可能写错了函数??

【问题讨论】:

  • songNumber 设置在哪里?您确定歌曲文件的路径正确吗?
  • 是的,我确定歌曲文件的路径。但我不确定你所说的“songNumber 设置在哪里”是什么意思我应该把它写成 'music.mixer.load(play_list[0:6])' 吗?
  • @Mike67 指的是包含代码中的pygame.mixer.music.load(play_list[songNumber] 行。 songNumber 必须在 play_toonz() 函数的范围之外定义,以使该行不会产生错误。

标签: python-3.x pygame


【解决方案1】:

此代码适用于我:

import pygame
import random

pygame.mixer.init()

# background music
play_list = []
play_list.append(r"D:\MikeStuff\MP3\04-Zombie.mp3")
play_list.append(r"D:\MikeStuff\MP3\03 Invincible.mp3")
play_list.append(r"D:\MikeStuff\MP3\10. Kashmir.mp3")
play_list.append(r"D:\MikeStuff\MP3\11-fozzy-sos.mp3")
play_list.append(r"D:\MikeStuff\MP3\104-radiohead-creep.mp3")

songNumber = 1

def play_toonz(play_list):
    random.shuffle(play_list)
    pygame.mixer.music.load(play_list[songNumber])
    pygame.mixer.music.play(10)

    for num, song in enumerate(play_list):
        if num == songNumber:
            continue
        pygame.mixer.music.queue(song)
        
play_toonz(play_list)
input("Press Enter to Exit....")

【讨论】:

  • 我试过了,我得到了这个错误:``` Traceback (last recent call last): File "main.py", line 34, in play_toonz(play_list) File "main .py",第 26 行,在 play_toonz pygame.mixer.music.load(play_list[songNumber]) pygame.error: Failed loading libmpg123.dll: Attempt to access invalid address. ```显然重新启动系统可以修复它。也只是好奇 "play_list.append(r"path\to\file")" 中的 'r' 是什么
  • r"..." 表示这是一个原始字符串,因此不会解释特殊字符。有关更多信息,请参阅this answer。要转义反斜杠,您可以使用 "D:\\MikeStuff\\MP3\\104-radiohead-creep.mp3"
  • 太棒了!谢谢!
  • 请接受答案,以便从“无答案”列表中删除此帖子。谢谢。
猜你喜欢
  • 1970-01-01
  • 2014-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多