如何在 Pygame 中将对象与其阴影相关联?

How to associate an object to its shadow in Pygame?

我有一朵云class,我有多种云形状,所以我需要将每个变化与其对应的阴影相关联,以便在其下方显示它。

但我尝试创建一个字典,其中云的图像作为键,它们的阴影作为值,我还创建了云和阴影分别在一个单独的列表中,然后使用 for 循环进行迭代在他们之上并将他们联系起来,但 none 的工作。

我遇到了一个错误 TypeError: 'pygame.Surface' object is not iterable

class Cloud(object):
    def __init__(self:
        imgs = random.choice([pygame.image.load(r'C:\Users\Salem\Documents\MyGame1\testcloud1.png').convert_alpha(), pygame.image.load(r'C:\Users\Salem\Documents\MyGame1\testcloud2.png').convert_alpha(),
        pygame.image.load(r'C:\Users\Salem\Documents\MyGame1\testcloud3.png').convert_alpha()])
        shadows = [pygame.image.load(r'C:\Users\Salem\Documents\MyGame1\cloud_shadow.png').convert_alpha(), pygame.image.load(r'C:\Users\Salem\Documents\MyGame1\testcloud2shadow.png').convert_alpha(), 
        pygame.image.load(r'C:\Users\Salem\Documents\MyGame1\testcloud3shadow.png').convert_alpha()]
        self.x = random.randrange(-1500, -500)
        self.y = random.randrange(-100, 400)
        for img in imgs:
            for shadow in shadows:
                i = random.randrange(len(imgs))
                self.img = random.choice(self.imgs[i])
                self.shadow = self.shadow[i]

那么我可以做什么呢?

注意:

我只需要将云的图像与其阴影相关联,但我知道如何显示每个对象及其对应的阴影。

顺便说一句,别管我乱七八糟的文件名^^

提前致谢!

创建云列表和阴影列表:

imgs = [pygame.image.load(r'C:\Users\Salem\Documents\MyGame1\testcloud1.png').convert_alpha(),
   pygame.image.load(r'C:\Users\Salem\Documents\MyGame1\testcloud2.png').convert_alpha(),
   pygame.image.load(r'C:\Users\Salem\Documents\MyGame1\testcloud3.png').convert_alpha()]

shadows = [pygame.image.load(r'C:\Users\Salem\Documents\MyGame1\cloud_shadow.png').convert_alpha(),
   pygame.image.load(r'C:\Users\Salem\Documents\MyGame1\testcloud2shadow.png').convert_alpha(), 
   pygame.image.load(r'C:\Users\Salem\Documents\MyGame1\testcloud3shadow.png').convert_alpha()]

zip 列表并选择一个随机元素:

self.img, self.shadow = random.choice(list(zip(imgs, shadows)))

zip 获取两个集合并将它们合并为一个集合,其中每个项目都是每个集合中的一个项目的元组。