저는 개발중인 우주 스크롤러 슈트업에 대한 스프라이트 생성에 관한 예제를 사용하고 있습니다. 천천히 그것이 어떻게 작동하는지 이해하려고 노력하면서, 나는 화면을 가로 질러 여러 개의 스프라이트를 얻을 수 있었다. 그러나 많은 스프라이트가 생성됩니다.파이 게임 - 제한된 스프라이트 인스턴스
그래서 내가 문제를 겪고있는 것은 코드가 생성하는 다중 대신에 초기 스프라이트 수를 제한하는 것입니다. 나는 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()
너는 무엇을 질문 하나? –
미안하지만, 기본적으로, 화면을 부드럽게지나 가기 위해 특정 수의 스프라이트를 얻는 방법은 무엇입니까? –
이것은 도움이 될지 모르지만 완전한 해결책은 아닙니다 :'not_in_bounds (sprite) : sprite.die()'더 이상 필요없는 항목을 자동으로 제거하려면. – ninMonkey