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

2024-04-24 01:05:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在Pygame上做一个游戏。最近,有人帮我在这个网站上制作了加载条(天啊,拉比是个天才)。更严重的是,我需要加载程序中的所有图片,因此我使用了以下代码: ! (我使用了'picture'作为占位符,在我的真实目录中,它是'hero\u left0.png'或'方框.png“或”火炬.png(以此类推):

Image=picture.image.load(sprite/picture.png).convert_alpha
bar_load=bar_load - 1

我需要这样做,以适应任何图片。这意味着350*2个元素,700行代码!你知道吗

有没有办法优化这个?所有图片都位于同一文件夹名'sprites'中。你知道吗


Tags: 代码程序目录游戏png网站bar图片
1条回答
网友
1楼 · 发布于 2024-04-24 01:05:45

据我所知,您希望将所有图像加载到代码中。您应该将所有图像对象存储在dict或其他结构中。 像这样做:

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))

这将生成所有图像对象的dict作为值,文件名作为键。您可以参考每个图像: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的键或重命名那些无效的

相关问题 更多 >