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
.
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
.