【问题标题】:How to make the path to songs in pygame relative如何使pygame中歌曲的路径相对
【发布时间】:2017-12-09 13:52:41
【问题描述】:

我正在用 python 开发一个简单的 Snake 游戏,它在家里按预期工作,但是当我把代码放在 github 上时,它没有找到歌曲的路径,我想让这个路径相对,而不是绝对的,因此它适用于每台计算机。

这是歌曲文件的部分代码 -

 def game_sound(s):
        """ Include the game sfx and music"""
        if s == 0:
            pygame.mixer.music.load("background.ogg")
            pygame.mixer.music.play(-1)
        elif s == 1:
            pygame.mixer.Sound("eating.wav").play()
        elif s == 2:
            pygame.mixer.Sound("game-over.wav").play()

TL - DR- 它在家里和其他地方都有效,我试图找到一种方法来解决这个问题,通过使路径相对我只是不知道如何。有人可以帮忙吗?

【问题讨论】:

  • 也许可以在这里查看:stackoverflow.com/q/918154/7766131
  • 没有工作@swimingduck,还是谢谢
  • 如果您在与游戏文件夹不同的文件夹中运行代码,那么您必须找到游戏文件夹的完整路径并加入歌曲文件。

标签: python-3.x pygame relative-path


【解决方案1】:

标准方法是使用应用程序找到文件夹的真实路径

import os, sys

APP_FOLDER = os.path.dirname(os.path.realpath(sys.argv[0]))

然后用它来创建文件的真实路径

full_path = os.path.join(APP_FOLDER, "eating.wav")

pygame.mixer.Sound(full_path).play()

或者您必须将"current working directory" (CWD) 更改为应用程序文件夹。

os.chdir(APP_FOLDER)

pygame.mixer.Sound("eating.wav").play()

您可以使用

查看当前工作目录
print(os.getcwd())

顺便说一句: 没有这种方法的问题不仅是当你在不同的计算机上运行时,而且当你从同一台计算机上的不同文件夹运行时 - 所以当你在桌面上创建快捷方式/图标时会出现问题执行程序为python game_folder/game.py

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-24
    • 1970-01-01
    相关资源
    最近更新 更多