簡體   English   中英

無法在Pygame 3.4中使我的暫停功能正常工作

[英]Cannot make my pause function work in Pygame 3.4

我正在制作Pong游戲,但是無論我做什么嘗試,我都無法實現按CTRL + C時會停止的暫停系統。

我試過了:

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為止?

我不是pygame專家,但我認為CTRL + C僅在終端窗口(而非pygame窗口)聚焦時才會生成KeyboardInterrupt 由於pygame在聚焦時會捕獲所有擊鍵,因此您可能必須使用pygame.key.get_mods()pygame.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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM