2017-04-07 6 views
1

그래, 좋아, 나는 주어진 시간에 한 인스턴스에만 존재할 필요가있는 내 게임 (플레이어, 보스, 레벨 골 ...) 따라서 객체로 인스턴스화해야 할 필요가있는 클래스로 처음 존재하는 것보다 수동으로 선언 된 스프라이트로 이러한 코드를 단순화하여 코드를 단순화하고 싶습니다.파이 게임 1.9.3 : 그룹에 스프라이트 추가 (클래스 없음)

(많은 어쨌든 클래스로 그룹 모두에 가장하지만 난 그 동의 여부를 말할 것 -. 확실히 단지의 경우이 주위에 방법을 알고하는 것이 유용 할 수 it'd)

나는 것 히트 감지 (그리고 화면에 그려지는)를 목적으로 그룹에서 스프라이트를 갖는 것을 좋아합니다. 그러나 이것에 문제가 있습니다. 필자는 고립 된 "클래스가없는"스프라이트를 만들어 목록에 추가하는 것이 매우 간단하다고 생각했습니다.

bloobList = pygame.sprite.Group() 

blooby = pygame.sprite.Sprite 

blooby.image = pygame.Surface([200,200]) 
blooby.image.fill([0,0,0]) 
blooby.rect = blooby.image.get_rect() 

bloobList.add(blooby) 

것은 그러나이 프로그램을 실행할 때, 발사시 응용 프로그램이 충돌합니다. 나는 주위 이것이 의미하는 어떠한 답을 찾을 수 없습니다 무엇을 찾고 봤 한

builtins.TypeError: add_internal() missing 1 required positional argument: 'group' 

: 내 IDE는 378 행으로 저를 받아 나에게 말한다, 파이 게임 라이브러리에서 sprite.py을 엽니 다. 자신을 확인하기 위해 동일한 프로그램에 시나리오를 추가하는 클래스 + 개체 + 그룹을 썼습니다.

moochList = pygame.sprite.Group() 

class Mooch(pygame.sprite.Sprite): 
    def __init__(self): 
     pygame.sprite.Sprite.__init__(self) 
     self.image = pygame.Surface([200,200]) 
     self.image.fill([0,0,0]) 
     self.rect = self.image.get_rect() 

stootch = Mooch() 

moochList.add(stootch) 

그리고 평소와 같이 완벽하게 작동합니다. 나는 Pygame.org의 문서를 체크했는데 그룹에 추가되기 위해 스프라이트가 클래스에서 생성 된 객체 여야한다고 특별히 말한 것은 아니지만 "클래스없는"스프라이트도 허용된다고 특별히 말한 것은 아닙니다.

필자는 Pygame을 처음 접했을 때 매우 새로운 점을 알고 있었기 때문에 클래스가없는 스프라이트가 그룹에 허용되어야한다고 생각하게 만든다. group.add function 은 스프라이트가 속한 클래스에 대한 언급없이 이름 지정된 특정 스프라이트와 그룹 자체에 관련됩니다.

답변

0

pygame.sprite.Sprite 클래스를 인스턴스 대신 그룹에 추가하려고하면 오류가 발생합니다. 괄호를 추가하면 인스턴스/개체를 만들 때 제대로 작동합니다.

blooby = pygame.sprite.Sprite()