微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python Pygame获取Sprite组中Sprite的属性

如何解决Python Pygame获取Sprite组中Sprite的属性

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

我有一个名为“ all_bullets”的精灵组。我正在尝试制作飞旋镖引擎,因此当我拍摄(按空格键)时,会将一个子弹对象添加到all_bullets组(我已经对该类进行了编码)。但是,我不想拍摄尽可能多的飞旋镖。因此,我只想在精灵组中没有回旋镖(子弹对象)时创建项目符号对象,因此我知道屏幕上没有回旋镖。但是,还有其他子弹。像手枪一样。 因此,我想知道如何获取Sprite组内部对象的.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',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

请注意,这可能不是最佳方法,因为对象的内部部件最好留给对象使用。因此,在上述情况下,您将创建一个bullet.draw()函数,并调用它以绘制image

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。