Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Pygame中将对象与其阴影关联?_Python_Oop_Pygame_Surface - Fatal编程技术网

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

Python 如何在Pygame中将对象与其阴影关联?,python,oop,pygame,surface,Python,Oop,Pygame,Surface,我有一个云类,我有各种各样的云形状,所以我需要将每个变化与其对应的阴影相关联,以便在它下面显示它 但我尝试创建一个字典,将云的图像作为键,阴影作为值,我还创建了一个单独的列表,将云和阴影分别放在一个单独的列表中,然后使用for循环对它们进行迭代并将它们关联起来,但这些都不起作用 我遇到了一个错误,上面写着TypeError:'pygame.Surface'对象不可移植 class Cloud(object): def __init__(self: imgs = rando

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

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

我遇到了一个错误,上面写着
TypeError:'pygame.Surface'对象不可移植

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\u shadow.png')。convert\u 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.img,self.shadow=random.choice(列表(zip(imgs,shadows)))

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

能否发布一些示例代码,以便我们知道您在做什么?@AdamConrad DoneIt看起来您正在选择加载的三个项的单个图像,这就是为什么它抱怨无法迭代的原因。另外,由于您是随机选择的,您如何知道所选图像的阴影?@AdamConrad,这两个列表的排序方式是,第一个列表中索引为1的对象对应第二个列表中索引为1的对象,依此类推。。此外,我还创建了cloud类的实例,以便每个实例都代表一个随机选择的云shape@Rabbid76我在这行中遇到了一个错误:
self.img,self.shadow=random.choice(zip(imgs,shadows))
,我意识到它应该是:
self.img,self.shadow=random.choicel(list(zip(imgs,shadows)))
@developeer对不起,我的错:
self.img,self.shadow=random.choice(list(zip(imgs,shadows)))