我正在尝试在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中集成“暂停”菜单和“主”菜单,以及将在游戏过程中显示的屏幕。我的代码首先加载了介绍性菜单或主菜单,该菜单工作正常,然后处理了...
看起来您的暂停菜单的while循环不在游戏循环中。试试这个: