如何防止 Pygame 从 Windows 触发“程序未响应”错误消息?

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

我正在 Pygame 中编写 Risk 的 hexmap 版本,我首先完全从命令行玩游戏,并根据代码中的指示更新游戏屏幕,例如当玩家完成移动后。这是相关代码:

pls = {'bill' : Player('RED', {}, 'bill'),
    'jim'  : Player('DARKBLUE', {}, 'jim'),
    'helv' : Player('LIGHTGREEN', {}, 'helv')}
while pls['bill'].armies > 0 and pls['jim'].armies > 0:
    pls['bill'].turn()     
    pygame.display.update()
    pls['jim'].turn()    
    pygame.display.update()
pygame.quit()

逻辑在命令行上工作正常,但屏幕不会更新(我在turn()方法中有显示命令)。通常这个错误是通过处理事件来解决的,但在我的程序中目前没有屏幕事件。如何让 Windows 停止等待屏幕反馈?

python pygame game-development
1个回答
0
投票

修复 Pygame 应用程序中的“无响应”错误:

pls = {
    'bill': Player('RED', {}, 'bill'),
    'jim': Player('DARKBLUE', {}, 'jim'),
    'helv': Player('LIGHTGREEN', {}, 'helv')
}

while pls['bill'].armies > 0 and pls['jim'].armies > 0:
    # Handle Pygame events to keep the program responsive
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
            
    pls['bill'].turn()
    pygame.display.update()
    
    # Handle events again before the next turn
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
            
    pls['jim'].turn()
    pygame.display.update()

pygame.quit()

事件处理

pygame.event.get()
调用很重要,因为它初始化事件,例如
QUIT
。如果没有这个,操作系统(在本例中为 Windows)可能会认为您的应用程序没有响应。

窗口响应性:即使您没有主动使用 GUI 交互,您也需要处理像

QUIT
这样的事件,以允许用户正确关闭窗口。

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