Python 如何在一个类中绘制多个精灵

Python 如何在一个类中绘制多个精灵,python,pygame,Python,Pygame,我正在制作一个以行星为背景的太空射击游戏。我决定在背景中画一些行星,当我向右移动时,行星应该向左移动。这让玩家感觉到宇宙飞船在太空中移动。然而,我只能为一个星球做这件事。当尝试将其他行星应用到一个类中时,它会不断地变化到另一个行星 lanetdic = {'planets':[]} imagestoload = ['Feza/graphs/sprites/saturne.png'] for i in imagestoload: img = pg.image.load(i).convert

我正在制作一个以行星为背景的太空射击游戏。我决定在背景中画一些行星,当我向右移动时,行星应该向左移动。这让玩家感觉到宇宙飞船在太空中移动。然而,我只能为一个星球做这件事。当尝试将其他行星应用到一个类中时,它会不断地变化到另一个行星

lanetdic = {'planets':[]}
imagestoload = ['Feza/graphs/sprites/saturne.png']
for i in imagestoload:
    img = pg.image.load(i).convert_alpha()
    planetdic['planets'].append(img)
这是加载精灵。在下面我为行星创建了一个类

class Planets(pg.sprite.Group):
    def __init__(self):
        pg.sprite.Group.__init__(self)
        self.frame = 0
        self.image = planetdic['planets'][self.frame]
        self.rect = self.image.get_rect()
        self.rect.center = (500+100*self.frame,HEIGHT/2)
        self.pos = vec(500,HEIGHT/2)
        self.vel = vec(0,0)
        self.acc = vec(0,0)
    def update(self):
        #self.acc = vec(0,0)
        self.frame = (self.frame + 1)%len(planetdic['planets'])
也许为一个行星创建一个类是不明智的,但如果有,我就找不到其他方法了。请告诉我

如果我们再开门见山的话。在下面我做了一个for循环来加载图像。并再次使用相同的for循环

planetdic = {'planets':[]}
    imagestoload = ['Feza/graphs/sprites/saturne.png','Feza/graphs/sprites/jupiter.png','Feza/graphs/sprites/venus.png','Feza/graphs/sprites/uranus.png','Feza/graphs/sprites/neptune.png']
    for i in imagestoload:
        img = pg.image.load(i).convert_alpha()
        planetdic['planets'].append(img)
当我应用多个图像时,它会在毫秒内将一个图像更改为另一个图像。如何防止这种情况发生。我只想展示背景中的每一颗行星,让它们移动

如何在一个类中绘制多个精灵

你不能那样做。但是,您可以创建一个类的多个属性

图像(曲面)必须是类
Planet
的构造函数的参数。
Planet
类是的子类,而不是:

class行星(pg.sprite.sprite):
定义初始化(自我,图像):
pg.sprite.Group.\uuuuu init\uuuuuuuuuuu(自)
self.frame=0
self.image=image
self.rect=self.image.get_rect()
self.rect.center=(500+100*self.frame,高度/2)
self.pos=vec(500,高度/2)
self.vel=vec(0,0)
self.acc=vec(0,0)
为每个行星创建
Planet
类的新实例对象:

行星=pg.sprite.Group() imagestoload=['Feza/graphs/sprites/saturne.png'、'Feza/graphs/sprites/jupiter.png'、'Feza/graphs/sprites/venus.png'、'Feza/graphs/sprites/neptune.png'] 对于imagestoload中的文件路径: img=pg.image.load(filepath).convert_alpha() 行星=行星(img) 行星。添加(行星)
“如何在一个类中绘制多个精灵”-您不会这样做。但是,您可以创建多个类。哦,是的,现在这是合理的,谢谢:)