Python Pygame 获取精灵组中精灵的属性

Python Pygame get the attributes of a sprite in a sprite group

TL;DR: 如何获取精灵组中对象的属性

我有一个名为 'all_bullets' 的精灵组。我正在尝试制作回旋镖引擎,所以当我射击(按 space)时,一个子弹对象将添加到 all_bullets 组(我已经编码了 class)。但是,我不想尽可能多地射击回旋镖。所以,我只想在sprite组中没有回旋镖(bullet object)的时候创建一个bullet object,这样我就知道屏幕上没有回旋镖了。但也有其他子弹。像手枪。 所以我想知道如何获取精灵组内对象的 .image 属性;该组中有多个对象,所以只输入 'bullet.image' 是行不通的,我试过了。 有什么建议么?提前致谢

没有代码很难回答。但是你的建议是,直接引用精灵的 .image 直接 应该 工作。

考虑一个简单的 Bullet 精灵:

class BulletSprite( pygame.sprite.Sprite ):
    def __init__( self, filename, from_point, to_point, speed=1 ):
        pygame.sprite.Sprite.__init__( self )
        self.image = pygame.image.load( filename ).convert_alpha()
        self.rect  = self.image.get_rect()
        self.speed = speed
        self.rect.center = ( from_point )
        self.x = from_point[0]
        self.y = from_point[1]
        #...

有精灵组:

all_bullets = pygame.sprite.Group()

# Add some bullets
for i in range( 5 ):
    from_point = ( 0, WINDOW_HEIGHT//2 )              # middle left
    to_point   = ( WINDOW_WIDTH, 100 * i )            # somewhere right
    # create the bullet
    new_bullet = Bullet( 'bullet.png', from_point, to_point ) 
    all_bullets.add( to_point ) 

# and one more:
boomerang1 = Bullet( 'boomerang.png', ( 0, 0 ), ( WINDOW_WIDTH, WINDOW_HEIGHT ) )
all_bullets.add( boomerang1 )

现在完全可以遍历此列表 using/accessing 单个精灵的 .image 成员:

for bullet in all_bullets:                               # every sprite in the group
    window.blit( bullet.image, ( bullet.x, bullet.y ) )  # paint the image

请注意,这可能不是执行此操作的最佳方式,因为对象的内部部分最好留给对象自己使用。所以在上面的例子中,你会创建一个 bullet.draw() 函数,并调用它来绘制 image.