Python pygame中的暂停系统

Python pygame中的暂停系统,python,time,pygame,Python,Time,Pygame,大家好,我花了几个小时试图在pygame中切换暂停,你按空格键,它暂停,然后你再按空格键取消暂停,我运气不好,有人能帮我吗 ############### 2nd attempt ############# global timedelay timedelay = pygame.time.wait (0) pause = 0 if event.type == KEYUP: if event.key == K_p

大家好,我花了几个小时试图在pygame中切换暂停,你按空格键,它暂停,然后你再按空格键取消暂停,我运气不好,有人能帮我吗

  ############### 2nd attempt ############# 
 global timedelay

        timedelay = pygame.time.wait (0)
        pause = 0

        if event.type == KEYUP:
            if event.key == K_p  and pause == 0:
                timedelay = pygame.time.wait (9999)
                pause = 1
                if event.key == K_p  and pause == 0:
                    timedelay = pygame.time.wait (0)
                    pause = 0
        timedelay


        ############### 1st attempt #############       
        if event.type == KEYDOWN:   
            pause = 0
            if event.key == K_p and pause == 0:
                while 1: 
                    pause = 0
                    event = pygame.event.wait()
                    pause = 1
                    if event.type == KEYDOWN:
                        if event.key == K_p  and pause == 0:
                            print "woo!"
                            pause = 0
                            break

不要阻止整个主循环运行,只需跳过循环的状态更改部分。您仍然需要能够响应事件,或者您的应用程序“无响应”。您还希望继续绘制,因为窗口可以移动,覆盖您的游戏,屏幕仍需要刷新。因此:

game_over = False
paused = False
while not game_over:
    # handle events
    for event in pygame.event.get():
        if event.type == KEYDOWN:
            paused = False
            if event.key == K_p:
                paused = True
        ...
    if not paused:
        # handle game state change
    # handle screen drawing
    pygame.display.flip()

我将如何改变游戏状态?使用上面的等待功能?不,我说的是你的游戏代码。一般来说,人们将主要的游戏循环分为三个步骤,“处理事件”、“更改游戏状态”和“绘图”。暂停时,您不希望停止游戏处理事件或绘图,您只希望每次绘制的内容相同。因此,您跳过了推进游戏的游戏逻辑。例如,移动角色或对象,推进计时器,etci问我如何让游戏停止?像等待函数
pygame.time.wait()
正在休眠整个程序,这正是我要说的不要做的
pygame.event.wait()
也只是让程序休眠,直到事件可用,在这里不是非常有用。你不希望程序停止,你希望游戏停止前进。啊,所以我需要冻结移动的对象(我正在修改蛇游戏顺便说一句)