微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

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

我遇到了一个错误显示 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 接受两个集合并将它们合并为一个集合,其中每个项目都是每个集合中一个项目的元组。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。