如何通过一种简单的方法在Pygame中加载大量图像?

时间:2019-02-03 13:17:40

标签: python pygame python-3.7 converters

我目前正在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'

1 个答案:

答案 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的键或将无效的文件名重命名,该方法将起作用