如何通过简单的方式加载Pygame中的大量图片?

How to load a large number of images in Pygame by a simple way?

我目前正在 Pygame 开发一款游戏。最近有人帮我做了这个网站的加载栏(天哪,Rabbid76 真是个天才)。更严重的是,我需要在我的程序中加载所有图片,所以我使用了以下代码: ! (我使用 'picture' 作为占位符,在我的真实目录中,它是 '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'.

据我了解,您想将所有图像加载到您的代码中。您应该将所有图像对象存储在字典或其他结构中。 像这样做:

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变量名时,这才有效,如果不使用其他东西作为字典的键或重命名那些无效的

的重构版本(添加此答案时代码不正确 pygame):

    import os
    import pygame


    sprites_folder_path = "path_to_sprites_folder"
    
    
    def image_loader(path: str) -> str:
        for i in os.listdir(path):
            yield ((os.path.splitext(i)[0]),
                   pygame.image.load(path + i).convert_alpha())

    sprites = dict(image_loader(sprites_folder_path))