2016-11-26 6 views
1

私は初心者です...別のクラスのPythonでforループを追加する

要するに、私はPythonのループのための別のクラスに追加しようとしています。以下は詳細です...

私はpythonとpygameでゲームを作っています。私はすべての私の '状態'(例えば、開始状態、ゲーム状態、ゲームオーバー状態など)のすべての基本クラスを持っています。これには、pygamesのイベントを通してループをチェックする関数が含まれています(例:キーを押すなど)。

以下は親メソッドです...これは機能します。

def events(self): 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      self.quit() 
     if event.type == pygame.KEYDOWN: 
      if event.key == pygame.K_ESCAPE: 
       self.quit() 

以下は子の方法です。これは、何が起こる

def events(self): 
    super().events() 
    for event in pygame.event.get(): 
     if event.type == pygame.KEYUP: 
      self.start_state = False 

は、コードがループのための親クラスで立ち往生し、すべて無視しますが...既存の「退出」と「エスケープ」イベントに「アップキーイベント」を追加するために追加したいですその下に私はまた、ループの子の下にスーパーを呼び出すことを試みたが、それはちょうどループのために子の中で立ち往生し、両親を無視します。

私は解決策が子クラスのイベントのための別のメソッドを作るだろうと思うが、私はそれが私がそれをしようとしている方法が可能なので、私は別の機能。

ありがとうございました。むしろ、その後

答えて

2

eventsメソッド内、それだけでイベントを処理するために別の方法を持っている方がよいが、どこか別の場所

class Base(): 

    def events(self): 
     for event in pygame.event.get(): 
      self._proceed_event(event) 

    def _process_event(self, event):   
     if event.type == pygame.QUIT: 
      self.quit() 
     if event.type == pygame.KEYDOWN: 
      if event.key == pygame.K_ESCAPE: 
       self.quit() 

class Child(Base): 

    def _process_event(self, event): 
     if event.type == pygame.KEYUP: 
      self.start_state = False 
     super()._proceed_event(event) 
それらを得るでしょうループ( for event in pygame.event.get():)を呼び出します
関連する問題