如何删除图像,然后再次blit?

问题描述

我正在使用 pygame 创建游戏,但遇到了问题。我的游戏是太空游戏:有流星向你袭来,你必须躲避它们,还可以向它们发射导弹。当导弹击中流星时,我想让导弹消失并使流星重新回到它开始坠落的地方。我看到了一行代码,展示了如何通过这样做使图像透明:

transparant = (0,0)
#Code in between
missle.image = missleImg
#I wrote some code to see if the missle was touching a meteor
missle.image.fill(transparent)

然而,当我再次尝试射击导弹时,它仍然是透明的。有没有人有更好的方法来取消和重新设置图像?

解决方法

使用列表或组来组织对象。为流星创建一个列表或组,为导弹创建另一个列表或组。当导弹击中流星时,从容器中取出物体。在需要时创建新对象:

如果流星立即出现在不同的位置,那么改变流星的位置属性就足够了,而不是破坏一个对象并创建一个新对象。

例如pygame.sprite.Spritepygame.sprite.Group

meteor_group = pygame.sprite.Group():
missile_group = pygame.sprite.Group():
pygame.sprite.groupcollide(meteor_group,missile_group,True,True)

例如列表:

meteor_list = []:
missile_list = []:
for meteor in meteor_list[:]:
    for missile in missile_list[:]:

        collide = # [...] check for collision 
        if collide:
            meteor_list.remove(meteor) 
            missile_list.remove(missile)