【问题标题】:Pause system in pygame [duplicate]pygame中的暂停系统[重复]
【发布时间】:2014-05-16 19:24:15
【问题描述】:

嗨,我花了几个小时试图在 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

【问题讨论】:

    标签: python time pygame


    【解决方案1】:

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

    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()
    

    【讨论】:

    • 我将如何更改游戏状态更改?有像上面这样的等待功能?
    • 不,我说的是你的游戏代码。通常人们将主游戏循环分为 3 个步骤,“处理事件”、“改变游戏状态”和“绘图”。您不想在暂停时停止游戏处理事件或绘制,您只希望每次绘制的内容都相同。因此,您正在跳过推进游戏的游戏逻辑。 IE。移动角色或物体,推进计时器等
    • 我在问如何让游戏停止?与等待功能一样
    • pygame.time.wait() 正在休眠你的整个程序,这正是我要说的要做的事情。 pygame.event.wait() 也只是让程序休眠,直到有事件可用,在这里不是很有用。你不希望程序停止,你希望游戏停止前进。
    • 啊,所以我需要冻结移动的物体(我正在修改蛇游戏)
    猜你喜欢
    • 2021-07-18
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多