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