Pygame开始菜单正在运行,但没有暂停菜单

问题描述 投票:0回答:1

我正在尝试在pygame中集成“暂停”菜单和“主”菜单,以及将在游戏过程中显示的屏幕。我的代码首先加载了介绍性菜单或主菜单,该菜单工作正常,然后处理了单击按钮的操作,以调用主游戏循环功能。当我在该循环中尝试调用暂停菜单的函数时,就会出现问题。我使用相同的循环来执行此操作,因此我不确定为什么一个有效而另一个无效。下面,我添加了代码片段以供参考。

主菜单(在程序中首先被调用:):>

def intro_screen():
    intro = True
    while intro:

        # Event listeners
        for event in pygame.event.get():

            main_window.fill(tan)

...我也有其他不重要的按钮,等等,但是为了摆脱介绍,鼠标事件将介绍设置为false并调用函数game_loop:

# Handle the click event
if click[0] == 1:
    intro = False
    game_loop()

game_loop函数具有类似的while循环:

def game_loop():
    playing = True
    paused = False

    while playing:
        # This is the main loop

        # Load in the play screens...
        main_window.fill(white)
        play_screen = PlayScreen(main_window)

还有按钮等...但是,当我将播放设置为False并暂停为True时,调用了pause_screen()函数时,它不会拉出任何新屏幕。它只是停留在游戏菜单上,就像没有收到任何事件一样。

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                playing = False

            # Listen for the escape key and bring up the pause menu
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_ESCAPE:
                    playing = False
                    paused = True

        pygame.display.update()

    while paused:
        pause_menu()

作为参考,它们全部包含在函数中。我的代码的最后一行只是调用intro_screen(),效果很好。

如果有帮助,我可以提供其余代码。我唯一能想到的是mouse事件有效,而keydown事件无效,但是从我的判断来看,我的语法似乎是正确的。

我正在尝试在pygame中集成“暂停”菜单和“主”菜单,以及将在游戏过程中显示的屏幕。我的代码首先加载了介绍性菜单或主菜单,该菜单工作正常,然后处理了...

python menu pygame event-handling pause
1个回答
0
投票

看起来您的暂停菜单的while循环不在游戏循环中。试试这个:

© www.soinside.com 2019 - 2024. All rights reserved.