[英]How can i get the first element from a sprite group in pygame
我创建了精灵组土地。 为此,我使用 class Landschaft 和 while 循环
我如何从精灵组中的第一个精灵获得 rect.x、rect.y rect.w 和 rect.h?
class Landschaft(pygame.sprite.Sprite): def __init__(self,image): pygame.sprite.Sprite.__init__(self) self.image = image #self.mask = pygame.mask.from_surface(self.image ) self.rect = self.image.get_rect() #pygame.draw.ellipse(self.image, red, [self.rect.x,self.rect.y,self.rect.width,self.rect.height],3) x=random.randrange(0, breite -60) y=random.randrange(200, hoehe - 200) self.rect.center = (x,y) land = pygame.sprite.Group() while len(land) < anzahl_gegenstaende: ii = len(land) img = pygame.image.load(f"Bilder/Gegenstaende/geg{ii}.png") if ii == 0: img = pygame.transform.scale(img,(breite)) else: zb,zh = img.get_rect().size scale_hoehe =100 scale_breite = int(100 * zb / zh) #img = img.convert_alpha() img = pygame.transform.scale(img,(scale_breite,scale_hoehe)) m = Landschaft(img) if not pygame.sprite.spritecollide(m, land, False): land.add(m)
可以使用sprites()
方法获得来自pygame.sprite.Group
的精灵列表:。 因此,组中的第一个精灵是:
first_sprite = group.sprites()[0]
问题? 您的land = pygame.sprite.Group()
阻止您从 pygame 中的精灵组中获取第一个元素。 这是一个相当普遍的问题。 要获得它,您必须像以前一样使用sprites()
,但方式不同。 您使用代码找到了解决方案。 你走近了。
作为问题的解决方案,您必须编写group.sprites()
(使用 [0])(不是pygame.sprite.Group ()
)才能从精灵组中的第一个精灵获得 rect.x, rect.y rect.w 和 rect.h
解决方案? 您的问题的解决方案是:
class Landschaft(pygame.sprite.Sprite):
def __init__(self,image):
pygame.sprite.Sprite.__init__(self)
self.image = image
#self.mask = pygame.mask.from_surface(self.image )
self.rect = self.image.get_rect()
#pygame.draw.ellipse(self.image, red, [self.rect.x,self.rect.y,self.rect.width,self.rect.height],3)
x=random.randrange(0, breite -60)
y=random.randrange(200, hoehe - 200)
self.rect.center = (x,y)
land = group.sprites()[0]
while len(land) < anzahl_gegenstaende:
ii = len(land)
img = pygame.image.load(f"Bilder/Gegenstaende/geg{ii}.png")
if ii == 0:
img = pygame.transform.scale(img,(breite))
else:
zb,zh = img.get_rect().size
scale_hoehe =100
scale_breite = int(100 * zb / zh)
#img = img.convert_alpha()
img = pygame.transform.scale(img,(scale_breite,scale_hoehe))
m = Landschaft(img)
if not pygame.sprite.spritecollide(m, land, False):
land.add(m)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.