我如何从 pygame 中的精灵组中获取第一个元素
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)
来自 pygame.sprite.Group
can be obtained with the sprites()
方法的精灵列表:。因此 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)
我创建精灵组土地。为此,我使用 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)
来自 pygame.sprite.Group
can be obtained with the sprites()
方法的精灵列表:。因此 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)