pygame:draw()当前绘制组中的所有精灵。我怎样才能画一个特定的

时间:2014-03-12 18:56:31

标签: python pygame

<Group(4 sprites)>

我在一组中有4个精灵,他们都准备用线条绘制,

stuff_to_draw.draw(screen)

他们目前都在同一时间画画。

是否可以做这样的事情

stuff_to_draw[0].draw(screen)

我看了

  

[https://www.pygame.org/docs/ref/sprite.html#pygame.sprite.Group] [1]

虽然我找不到有关选择组中特定元素的任何有用信息。

我想要实现的目标是什么?

精灵组目前拥有一个回答精灵,它由位置(x,y)和要写入blit的字母图像组成。

目前,在所有地图中,答案都是blitted而不是当前问题。所以我想问一个问题* stuff_to_draw [0] *然后问两个* stuff_to_draw [1] *。

2 个答案:

答案 0 :(得分:2)

首先,为您的每个精灵添加self.type。给它一个值,例如self.type = 1。当你想绘制某个精灵或一组精灵时,请调用它:

for sprite in group: #Replace group with your sprite group
    if sprite.type == 1: #Or whatever type you want
        sprite.draw(screen)
    elif sprite.type == 2:
        sprite.draw(screen)
    #Etc...

接下来,在您的sprite课程中,请确保继承自pygame.sprite.Sprite

class my_sprite_class(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__()
        #Etc...

    #Add this draw function so we can draw individual sprites
    def draw(self, screen):
        screen.blit(self.image, self.rect)

我忘记了个别精灵没有绘制功能,只有群体。 @pmoleri @jackdh我的不好

请在此处阅读此post以了解该课程可以做些什么。

如果您还有其他问题,请在下方发表评论。

答案 1 :(得分:0)

你可以搞任何个人精灵,但我不推荐它。这将是这样的:

sprite = stuff_to_draw.sprites()[0]
screen.blit(sprite.image, sprite.rect)

我的建议是在Sprites Group保留您想要绘制的内容,并将其余内容保存在单独的列表或组中。