2017-11-27 7 views
0

私は1人のプレーヤーがスコア3に当たったらゲーム画面をGame Over Screenに変更しようとしています。私のポンファイルには次のものがあります。 Gameover_stateはグローバル変数です。画面は別のものに変更する方法を制御し、私の画面ファイルで画面を変更する特定のスコアを打った後

def main(): 
while running: 
    #Code and event based things 

    #if the score reaches 3, then the game is over 
    if player_paddle.score == 3 or ai_paddle.score == 3: 
     gameover_state = True 

、私は私のGamestate画面でこれを持っている:

class GameScene(SceneBase): 
    def __init__(self): 
     SceneBase.__init__(self) 


    def ProcessInput(self, events, pressed_keys): 
     for event in events: 
      if event.type == pygame.KEYDOWN and event.key == pygame.K_RETURN: 
       # Move to the next scene when the user pressed Enter 
       self.SwitchToScene(GameOverScene()) 

      if event.type == pygame.KEYUP: 
       print("You are hitting up!") 
       print(self.next) 


    def Update(self): 
     #pongtry4.main() 



     if pongtry4.gameover_state == True: 
      self.SwitchToScene(GameOverScene()) 

     pongtry4.main() 

    def Render(self, screen): 
     # The game scene is just a blank blue screen 
     #screen.fill((0, 0, 255)) 
     pass 

私はデバッグを試みたし、私のgameover_stateは、最終的には、AIやプレイヤーのいずれかの後にtrueを返しますしかし、gamestateは画面上のゲームに適切に変化しません。問題は、pongtry4.main()などの呼び出し順序ですか?ありがとう。あなたは、main関数内でこれを実装することができ

loop = True # This Variable is global 
loop2 = True 
while loop: 
    GameScene.processInput(# args) 
    GameScene.Update(# args) 
    GameScene.render(# args) 
''' Inside the function, once a certain score is reached, loop is declared 
false''' 
while loop2: 
    # place other scene here 
pygame.quit() 

、それのthats:あなたは何ができるか

+0

異なる変数に値を表示し、コードのどの部分を実行するかは 'print()'を使ってください。コード内で何が起こっているのかを確認するのに役立ちます。 – furas

+0

プログラムをコピーして実行してテストできる[最小限の、完全で検証可能な例](https://stackoverflow.com/help/mcve)にすることによって、私たちを助けなければなりません。あなたのコードは動作します。 – skrx

+0

私は以前の質問でコードをチェックしたのですが、なぜ 'pongtry4.main()'を使うのかわかりません - それは 'ProcessInput() '、' Update() '、' Render ) ' – furas

答えて

0

は、イベントハンドラにそのゲームシーンの最初の場所です。

関連する問題