2017-11-27 4 views
0

한 선수가 점수 3을 치면 내 Game 화면을 Game Over Screen으로 변경하려고합니다. 내 pong 파일에 다음과 같은 내용이 있습니다. 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 결국 후 true를 반환하거나 인공 지능 또는 플레이어 3을 얻습니다. 그러나 gamestate는 화면에서 게임으로 바뀌지 않습니다. 문제는 pongtry4.main() 또는 다른 것을 호출하는 순서입니까? 감사. 당신이 할 수있는 일

+0

다른 변수에 값을 표시하고 코드의 일부를 실행하려면'print()'를 사용하십시오. 코드에서 어떤 일이 벌어지고 있는지 보도록 도와줍니다. – furas

+0

우리는 프로그램을 복사, 실행 및 테스트 할 수있는 [최소한의 완전하고 검증 가능한 예] (https://stackoverflow.com/help/mcve)로 바꾸어줌으로써 우리를 도와야합니다. 그렇지 않으면 방법을 이해하는 것이 어렵거나 불가능합니다. 귀하의 코드가 작동합니다. – skrx

+0

이전 질문에서 코드를 검사했는데 왜'pongtry4.main()'을 사용하는지 모르겠습니다 - 코드에 'ProcessInput()','Update()','Render)' – furas

답변

0

는 이벤트 핸들러에 게임 장면은 처음이다 :

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() 

메인 함수 내에서이 구현할 수, 그리고 그것을 이잖아.