2017-03-26 4 views
1

파이썬 프로그래밍에서 상당히 새로운 기능입니다.파이 게임 클래스/객체 관리

업데이트 할 수 있도록이 스프라이트를 그룹에 추가해야하는데 문제는이 스프라이트의 참조를 꺼내는 방법을 이해할 수 없다는 것입니다. 아래 샘플 프로그램에서 로봇의 인스턴스화가 상자를 만들고 상자의 인스턴스화가 버그를 생성한다는 것을 알 수 있습니다. 내 질문은 : 1. 다른 개체에 묻혀있는 개체를 스프라이트 그룹에 어떻게 추가합니까? 2. 박스 오브젝트는 로봇과 함께 움직일 것이지만, 장래에 상자가 다른 로봇으로 넘어 가서이 첫 번째 로봇이 사라질 수 있습니다. 첫 번째 로봇에 의해 상자가 생성 된 경우이를 어떻게 관리합니까?

class Robot(pygame.sprite.Sprite): 
    def __init__(self): 
     pygame.sprite.Sprite.__init__(self) 
     self.numBox = random.randint(1,5) 
     for box in self.numBox: 
      box = Box(): 
class Box(pygame.sprite.Sprite): 
    def __init__(self): 
     pygame.sprite.Sprite.__init__(self) 
     bug = Bug() 
class Bug(pygame.sprite.Sprite): 
    ... 

def main(): 
    robot = Robot() 
    groups = pygame.sprite.Group() 
    while TRUE: 
     groups.update() 
+0

클래스 Bug가 Sprite를 상속 했습니까? – Zealseeker

답변

1

모든 클래스가 pygame.sprite.Sprite 당신이 그렇게 모든 클래스는 매개 변수가에 자신을 추가 group을 만들 수있는 상속 가정. 슈퍼 클래스 pygame.sprite.Spriteinit 메소드에 임의의 수의 그룹을 전달할 수 있습니다.이 메소드는 객체를 그룹에 추가합니다. 그런 다음이 매개 변수를 다른 모든 클래스에 전달하면됩니다. 예 :

class Robot(pygame.sprite.Sprite): 

    def __init__(self, group): 
     super(Robot, self).__init__(group) 
     self.num_box = random.randint(1,5) 
     for box in self.numBox: 
      box = Box(group): 

class Box(pygame.sprite.Sprite): 

    def __init__(self, group): 
     super(Box, self).__init__(group) 
     bug = Bug(group) 

class Bug(pygame.sprite.Sprite): 

    def __init__(self, group): 
     super(Bug, self).__init__(group) 
     ... 

def main(): 
    group = pygame.sprite.Group() 
    robot = Robot(group) 
    while True: 
     group.update()