在pygame脚本中使用pyins包含声音文件

2024-10-03 11:21:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我对编程还不熟悉,所以我给自己提出了创建Pong的挑战,我做到了。现在我想和几个朋友分享它,所以我决定尝试使用pyinstaller(尝试过cx_Freeze)。 在这个乒乓球游戏我有3个音效,位于文件夹“sfx”。因此,我研究了使用pyinstaller包含的文件,因此我的.spec文件显示:

added_files = [
        ('E:\Game Development Stuff\Python 3\Games\Pong\sfx\hitOutline.ogg', 'sfx'),
        ('E:\Game Development Stuff\Python 3\Games\Pong\sfx\hitPaddle.ogg', 'sfx'),
        ('E:\Game Development Stuff\Python 3\Games\Pong\sfx/score.ogg', 'sfx')
        ]

a = Analysis(['pong.py'],
         pathex=['E:\\Game Development Stuff\\Python 3\\Games\\Pong'],
         binaries=None,
         datas=added_files,

在Pong程序中,我使用以下代码来获取路径:

^{pr2}$

因此,我使用pyinstaller(使用命令pyinstaller)生成exe文件pong规范) 但当我打开pong.exe文件文件命令窗口显示:

Traceback "<string>", Unable to open file 'E:\\Game Development Stuff\\Python 3\\Games\\Pong\\dist\\pong\\sfx\\hitPaddle.ogg'

但在同样的道路上打高尔夫球.ogg. 在我看来pygame找不到它是因为某种奇怪的原因?在


Tags: 文件命令gameaddedfilesexegamesdevelopment
2条回答

在为同一个问题挣扎了几个小时之后,我解决了这个问题。结论:

问题不在于找不到它,然后它会说一些“找不到”的东西。打开文件确实是个问题。不知何故,.ogg格式会带来问题。我把所有的.ogg文件都改成了.wav文件,我的游戏现在可以作为可执行文件运行了。在

但我不知道为什么,因为两周前,对于以前的版本,我确实设法用完全相同的.ogg文件制作了一个可工作的.exe。我不认为我所做的改变会对这件事产生什么影响。不管怎样,它现在起作用了,也许这也可以为其他人解决这个问题。在

我相信问题就在这一条线上。您没有正确地重新编码文件。你写道:

hitPaddle = resource_path(os.path.join(fileDir, "sfx", "hitPaddle.ogg"))

相反,你应该:

^{pr2}$

这是因为在spec文件中添加文件时,您声明它们应该位于“root\sfx”文件夹中。当.exe在一个文件模式下运行时,所有文件实际上都位于一个名为MEIXXXX的临时文件夹中,其中XXXX是一些整数。当你运行.exe时,如果你打开这个文件夹,你应该可以在那里看到你的文件。在

相关问题 更多 >