我正在 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 停止等待屏幕反馈?
修复 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
这样的事件,以允许用户正确关闭窗口。