我目前正在嘗試用pygame創建一個游戲,在定義了精靈Enemy、Player和Skill之后,我希望技能的作用是Player每秒向最近的Enemy射擊技能,我如何獲得最近的Enemy位置?
雖然我使用 for 回圈從游戲螢屏邊緣隨機顯示 range(8) 內的 Enemy sprite,并且在殺死一個 Enemy 后,將顯示新的敵人。但是當我使用for回圈時,我怎么知道下面哪個是sprite[1],哪個是sprite[2]?有沒有辦法將我創建的精靈放在串列或其他東西中?這樣我就可以分析哪個是最近的,讓技能跟蹤它并殺死它。
敵人精靈類:
`
class Enemy(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.transform.scale(ayu_img, (64, 64)) # sprite elements
self.image.set_colorkey(BLACK)
self.rect = self.image.get_rect() # sprite location fixed
self.radius = 32
randomNum = random.randrange(1, 4) # Dice for 1 to 4 condition
if randomNum == 1:
self.rect.x = random.randrange(-40, -32)
self.rect.y = random.randrange(0, HEIGHT - self.rect.height)
elif randomNum == 2:
self.rect.x = random.randrange(WIDTH 32, WIDTH 40)
self.rect.y = random.randrange(0, HEIGHT - self.rect.height)
elif randomNum == 2:
self.rect.x = random.randrange(0, WIDTH - self.rect.width)
self.rect.y = random.randrange(-40, -32)
elif randomNum == 4:
self.rect.x = random.randrange(0, WIDTH - self.rect.width)
self.rect.y = random.randrange(HEIGHT 32, HEIGHT 40)
self.speedx = random.randrange(1, 2)
self.speedy = random.randrange(1, 2)
def update(self):
if self.rect.centerx > player.rect.centerx: # movement judge
self.rect.centerx -= self.speedx
else:
self.rect.centerx = self.speedx
if self.rect.centery > player.rect.centery:
self.rect.centery -= self.speedy
else:
self.rect.centery = self.speedy
`
我在游戲中創造敵人的方式
`
for i in range(8):
enemy = Enemy() # create entity
all_sprites.add(enemy) # put into the sprite list
enemies.add(enemy) # put into the enemy list
`
有沒有辦法讓我在范圍(8)內敵對敵人[i]?還是別的什么?我不確定我的想法是好的還是有一種簡化的方法來做到這一點......
uj5u.com熱心網友回復:
Apygame.sprite.Groups可以迭代:
for sprite in all_sprites:
# [...]
當然你可以enumerate精靈:
for i, sprite in enumerate(all_sprites):
# [...]
您可以通過以下方式獲取 Sprite 串列pygame.sprite.Group.sprites:
sprite_list = all_sprites.sprites()
if len(sprite_list) > 0:
sprite_0 = sprite_list[0]
# [...]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/527769.html
標籤:数组列表游戏精灵
