2017-06-19 8 views
0

私はゲーム終了時に画面上にゲームを表示するゲームを作成しています。画面上のゲームは表示されますが、問題は何かキーを押すとゲームが開始しないということです。チェックするpygameのゲームがキープレスで始まっていない

def gameOverScreen(): 
    textFont = pygame.font.Font('freesansbold.ttf',90) 
    while True: 
     overSurf = textFont.render('GAME OVER',True,RED) 
     overRect = overSurf.get_rect() 
     overRect.center = (WINDOWWIDTH/2,WINDOWHEIGHT/2) 
     DISPLAYSURF.blit(overSurf,overRect) 
     drawPressKeyMessage() 
     checkForKeyPress() 
     if checkForKeyPress(): 
      pygame.event.get() #clear event queue 
      return 
     pygame.display.update() 
     FPSCLOCK.tick(FPS) 

機能:

は、ゲームはこの上にあるときに呼び出されるこの関数は、連続的プレーヤーの任意のキーを押すまで実行されている理由は、私は、関数gameOverScreen()はwhileループの外に戻っていないと思われる、私は理解できませんでしたキーを押して、次のとおりです。すべての機能を呼び出す

def checkForKeyPress(): 
    if len(pygame.event.get(QUIT)) > 0: 
     terminate() 
    keyUpEvents = pygame.event.get(KEYUP) 
    if len(keyUpEvents) == 0: 
     return None 
    else: 
     return keyUpEvents[0].key 

主な機能は次のとおりです。

def main(): 
    global FPSCLOCK, DISPLAYSURF, BASICFONT 

    pygame.init() 
    FPSCLOCK = pygame.time.Clock() 
    DISPLAYSURF = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT)) 
    BASICFONT = pygame.font.Font('freesansbold.ttf', 18) 
    pygame.display.set_caption('Wormy') 

    showStartScreen() 
    while True: 
     runGame() 
     showGameOverScreen() 
+0

'gameOverScreen()'と呼ばれるものと、直後のコードは何ですか? – micsthepick

+0

キーが押されるとすぐに 'gameOverScreen'が終了します。コードは後で実行されないとどのように伝えることができますか? – micsthepick

+0

@micsthepick gameOverScreen()関数は、返り値が返されるまで実行し続けます。 – Tango

答えて

1

keypressハンドラが2回呼び出されました。

checkForKeyPress() 
    if checkForKeyPress(): 

最初の呼び出しは、キー押下がないと呼ばれる第二の時間ようkedownイベントのイベントキューを取り除き、従ってループは終了することができません。

2つの解決策があります。

次のいずれかの最初の呼び出しを削除 - これらの行の最初を奪う:

checkForKeyPress() -- delete this line 
if checkForKeyPress(): 

か:変数に結果を格納している場合に変数を使用でステートメント:

keyPress = checkForKeyPress() 
if keyPress: 
    ... 
関連する問題