我正在使用一個關於我正在開發的空間卷軸射擊精靈世代的例子。通過慢慢地瞭解它是如何工作的,我已經設法讓多個精靈橫穿屏幕。但是,有很多精靈都會生成。Pygame - 精靈限制實例
所以我遇到的麻煩是限制了精靈的初始數量,而不是代碼產生的多少。我想過使用if sprites.__len__ < 10: sprites.add(drone)
,但是當我嘗試過時,它不起作用。我的想法是,每次它循環時,它都會檢查組中的精靈數量,如果它小於10,則向該組添加一個精靈,直到它達到10爲止。這樣,如果它離開了屏幕或被破壞,然後它會繼續做檢查並保持不變。
這是球員類:
class Player(pygame.sprite.Sprite):
def __init__(self, *groups):
super(Player, self).__init__(*groups)
self.image = pygame.image.load('player.png')
self.rect = pygame.rect.Rect((screen_width, (random.randrange(0,screen_height))), self.image.get_size())
self.dx = -10
self.pos = random.randrange(0,screen_height)
def update(self):
self.rect.centerx += self.dx
if self.rect.right < 0:
self.kill()
,這是關於精靈的增加部分。
sprites.update()
screen.fill((200, 200, 200))
sprites.draw(screen)
drone = Player()
self.y = random.randrange(0,screen_height)
sprites.add(drone)
pygame.display.flip()
這可能很明顯,但我仍然在學習,所以指導會很棒。
第二個問題 - 更多的思想確認。如果我不想讓精靈在屏幕底部畫一半。難道我基本上說,如果self.rect.bottom> SCREEN_HEIGHT,然後定位精靈@ SCREEN_HEIGHT
完整的源:http://pastebin.com/PLRVHtxz
編輯 - 我想我已經解決了,只是需要讓精靈運行更順暢。
while 1:
clock.tick(40)
numberAlien = 5
for event in pygame.event.get():
if event.type == pygame.QUIT:
return
if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
return
sprites.update()
screen.fill((200, 200, 200))
sprites.draw(screen)
drone = Player()
if sprites.__len__() < numberAlien:
self.y = random.randrange(0,screen_height)
sprites.add(drone)
pygame.display.flip()
那麼你在問什麼? – 2013-04-09 21:30:54
對不起,基本上,我如何獲得一定數量的精靈順利地穿過屏幕。 – 2013-04-09 23:18:13
這可能會有所幫助,但不是一個完整的解決方案:'if not_in_bounds(sprite):sprite.die()'自動刪除你不再需要的東西。 – ninMonkey 2013-04-10 16:36:54