我目前正在Pygame上开发游戏。最近,有人帮助我在此网站上创建了加载栏(上帝,拉比76是天才)。更严重的是,我需要在程序中加载所有图片,因此我使用了以下代码: ! (我使用'图片'作为占位符,在我的真实目录中,它是' hero_left0.png '或' box.png '或“ Torch.png ”,依此类推):
Image=picture.image.load(sprite/picture.png).convert_alpha
bar_load=bar_load - 1
我需要这样做以适合任何图片。这意味着350 * 2个元素,所以700行代码!
是否有优化的方法?所有图片都使用相同的文件夹名称'sprites'。
答案 0 :(得分:1)
据我了解,您希望将所有图像加载到代码中。您应该将所有图像对象存储在字典或其他结构中。 做这样的事情:
import os
# If using windows make sure to convert all the '\' in the path to '/'
# like so: sprites_folder_path.replace('\', '/')
sprites_folder_path = 'path_to_sprites_folder'
# Make sure there is a '/' at the end of the path
def image_loader(path) -> str:
for i in os.listdir(path):
yield (os.path.splitext(i)[0]),
picture.image.load(path + i).concert_alpha)
images = dict(image_loader(sprite_folder_ path))
这将生成所有图像对象的字典作为值,文件名作为键。您可以引用每个图像:images[filename].
或者,如果您想非常简洁,那么;
def image_loader(path) -> str:
return dict((os.path.splitext(i)[0]), picture.image.load(path + i).concert_alpha) for i in os.listdir(path))
注意:仅当您的所有文件名都是有效的python变量名时,如果不使用其他名称作为dict的键或将无效的文件名重命名,该方法将起作用