我不是 pygame 专家,但我认为只有在终端窗口(而不是 pygame 窗口)被聚焦CTRL + C
时才会生成。KeyboardInterrupt
由于 pygame 在专注时会捕获所有击键,因此您可能必须使用pygame.key.get_mods()
andpygame.KMOD_CTRL
来捕获CTRL
+ 字母键。
无论如何,两个 while 循环(一个嵌套在另一个循环中)和一个布尔值似乎构成了一个有效的暂停功能。这会在 "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()