繁体   English   中英

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

[英]Python Pygame get the attributes of a sprite in a sprite group

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

我有一个名为“all_bullets”的精灵组。 我正在尝试制作回旋镖引擎,因此当我射击(按空格)时,子弹 object 将添加到 all_bullets 组(我已经编码了 class)。 但是,我不想尽可能多地射击回旋镖。 所以,我只想创建一个子弹 object 当精灵组中没有回旋镖(子弹对象)时,我知道屏幕上没有回旋镖。 但也有其他子弹。 像手枪。 所以我想知道如何获取精灵组内的 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 )

现在完全有可能使用/访问单个精灵的.image成员遍历此列表:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM