2016-03-31 20 views
0

私はPongゲームを作っていますが、何を試してもCTRL + Cを押したときに停止する一時停止システムを実装できません。私の一時停止機能をPygame 3.4で動作させることはできません

は、私が試した:

elif event.key == K_SPACE: 
    try: 
     hello = pygame.time.delay(1000) 
    except KeyboardInterrupt: 
     hello = pygame.time.delay(1) 

そして:

elif event.key == K_SPACE: 
    try: 
     pygame.time.get_ticks() 
    except KeyboardInterrupt: 
     pass 

とを:

elif event.key == K_SPACE: 
    try: 
     time.sleep(10) 
    except KeyboardInterrupt: 
     pass 

がどのように私はCTRL + Cが押されるまで、私のゲームを一時停止するのですか?

答えて

0

私はパイガームエキスパートではありませんが、CTRL + Cは、ターミナルウィンドウ(パイゲームウィンドウではなく)にフォーカスがある場合にのみKeyboardInterruptを生成します。 pygameはフォーカスしている間にすべてのキーストロークをキャプチャするので、おそらく +文字キーをキャプチャするには、pygame.key.get_mods()pygame.KMOD_CTRLを使用する必要があります。

とにかく、2つのwhileループ(1つは他のものの中に入れ子になっています)とブール値が動作中の一時停止機能を作っているようです。これが "p"で一時停止して再開し、CTRL + C

import pygame 

def main(): 
    pygame.init() 
    WIDTH=100 
    HEIGHT=100 
    SCREEN = pygame.display.set_mode((WIDTH, HEIGHT)) 
    CLOCK = pygame.time.Clock() 
    FPS = 10 
    running = True 
    # outer loop 
    while True: 
     for event in pygame.event.get(): 
      if event.type == pygame.QUIT: 
       pygame.quit() 
       quit() 
      if event.type == pygame.KEYDOWN: 
       if event.key == pygame.K_p: 
        # resume 
        running = True 
       if event.key == pygame.K_c: 
        if pygame.key.get_mods() & pygame.KMOD_CTRL: 
         # ctrl + z 
         running = True 
     print "paused" 
     CLOCK.tick(FPS) 
     # game loop 
     while running: 
      for event in pygame.event.get(): 
       if event.type == pygame.QUIT: 
        pygame.quit() 
        quit() 
       if event.type == pygame.KEYDOWN: 
        if event.key == pygame.K_p: 
         # pause 
         running = False 
        if event.key == pygame.K_c: 
         if pygame.key.get_mods() & pygame.KMOD_CTRL: 
          # ctrl + z 
          running = False 
      # rest of game code 
      print "running" 
      CLOCK.tick(FPS) 
main() 
関連する問題