2017-03-26 18 views
1

Pythonプログラミングでかなり新しいです。pygameクラス/オブジェクト管理

私は今の問題は、私はこれらのスプライトの参照を引き出す方法を理解していないで、私は更新できるようにグループにこれらのスプライトを追加する必要があります。以下のサンプルプログラムでは、ロボットのインスタンス化によってボックスが作成され、ボックスのインスタンス化によってバグが生成されることがわかります。私の質問は次のとおりです。 1.スプライトグループに他のオブジェクトに埋め込まれているオブジェクトを追加するにはどうすればいいですか? 2.ボックスオブジェクトはロボットとともに移動しますが、将来、ボックスが別のロボットに引き渡され、この最初のロボットが離れることがあります。最初のロボットによってボックスが作成された場合、これをどのように管理しますか?

すべてのクラスは、あなたがそのようにすべてのクラスは、彼らが自分自身を追加し、パラメータ groupを取る作ることができる pygame.sprite.Spriteを継承すると仮定すると
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はスプライトを継承しましたか? – Zealseeker

答えて

1

。任意の数のグループを、スーパークラス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() 
関連する問題