我再次,昨天我问了这个问题 - Choosing a random sound Pygame并在测试我的实施时遇到了问题。
错误消息是:
Traceback (most recent call last):
File "F:/Source Code/Python/graphicalSlotMachine/net/Toby/GSM/Main.py", line 5, in <module>
class Main:
File "F:/Source Code/Python/graphicalSlotMachine/net/Toby/GSM/Main.py", line 6, in Main
fruity = Machine.fruitMachine()
File "F:\Source Code\Python\graphicalSlotMachine\net\Toby\GSM\Machine.py", line 46, in __init__
self.splash()
File "F:\Source Code\Python\graphicalSlotMachine\net\Toby\GSM\Machine.py", line 91, in splash
self.fruitMachine()
File "F:\Source Code\Python\graphicalSlotMachine\net\Toby\GSM\Machine.py", line 191, in fruitMachine
ResourceLoader.SoundManager.playRandomLossSound()
File "F:\Source Code\Python\graphicalSlotMachine\net\Toby\GSM\Util\ResourceLoader.py", line 41, in playRandomLossSound
random.choice(ResourceLoader.SoundManager.lossSounds).play()
AttributeError: 'str' object has no attribute 'play'
列表是:
lossSounds = ["Assets//2SAD4ME.ogg"] # list of sound objects
winSounds = ["Assets//OBAT.ogg", "Assets//DSWYFD.ogg"]
持有错误的方法是:
@staticmethod
def playRandomLossSound():
random.choice(ResourceLoader.SoundManager.lossSounds).play()
最后我对这个方法的实现是:
if reel1.reelMove == reel2.reelMove == reel3.reelMove == 0 and self.end == 0:
if self.fruitlist[0][2] == self.fruitlist[1][2] == self.fruitlist[2][2]:
self.message = "Congratulations, you have won 0/"
ResourceLoader.SoundManager.playRandomWinSound(1)
if self.fruitlist[0][2] == 1:
self.credits += 1
if self.fruitlist[0][2] == 2:
self.credits += 3
if self.fruitlist[0][2] == 3:
self.credits += 5
if self.fruitlist[0][2] == 4:
self.credits += 10
self.end = 1
else:
self.message = "You did not win this time, try again?"
ResourceLoader.SoundManager.playRandomLossSound()
self.end = 1
谢谢你的帮助。
答案 0 :(得分:0)
更改您的方法,因为您的列表包含字符串:
@staticmethod
def playRandomLossSound():
sound = random.choice(ResourceLoader.SoundManager.lossSounds)
pygame.mixer.Sound(sound).play()