我的 PyGame 项目的文件结构抛出无数错误 - 我做错了什么?

My file structure for a PyGame project throws countless errors - what am I doing wrong?

我正在为大学做一个项目,其中一个目标是拥有一个有效且有效的文件结构来包含游戏。理论上,我完全明白这一点。我制作了文件结构图并开始编写我的模块 - 但我所做的几乎所有事情似乎都会引发错误。这是我的文件结构示例。

/main folder

    main.py

    /gameloop
        mainGameLoop.py
        /images
            background1.png
            background2.png
        /data


    /sprites
        spriteClasses.py
        /images
            image1.png
            image2.png
        /data
            statsSheet1.txt
        

    /menus
        pauseMenu.py
        startMenu.py
        saveMenu.py
        /images
            image3.png
            image4.png
        /data


    /items
        itemClasses.py
        /images
            image5.png
            image6.png
        /data

main.py 在 /gameloop 中调用 mainGameLoop.py。但是,任何已加载到 mainGameLoop.py 的实体(例如背景图像或字体)都无法被 main.py 访问,我得到一个错误。

例如,将 mainGameLoop 导入 main.py 并从中调用 showBackground 函数会出现错误:“FileNotFoundError:[Errno 2] 没有这样的文件或目录:'background1.png'”

同样,我希望能够从 mainGameLoop 内部调用 pauseMenu。执行此操作的最佳方法是什么?

将文件放在同一目录或子目录中是不够的。您还需要设置工作目录。 资源(图像、字体、声音等)文件路径必须相对于当前工作目录。工作目录可能与 python 脚本的目录不同。
可以使用 __file__. The current working directory can be changed with os.chdir(path).
检索文件的名称和路径 将以下内容放在代码的开头,将工作目录设置为与脚本目录相同:

import os
os.chdir(os.path.dirname(os.path.abspath(__file__)))

如果您在 main.py 中执行此操作,您可以使用相对路径从项目中的任何其他模块访问文件。例如:

imag = pygame.image.load('gameloop/images/background.png')