gpt4 book ai didi

python - 在 while 循环内延迟 (Python/Pygame)

转载 作者:行者123 更新时间:2023-12-01 22:18:37 25 4
gpt4 key购买 nike

我有这个功能用于我正在创建的游戏的死亡屏幕。

def deathScreen():
deathScreen = True
while deathScreen == True:
screen.fill(black)
for event in pg.event.get():
if event.type == pg.QUIT:
quitGame()
deadText = titleFont.render("You Died!", True, white)
screen.blit(deadText, (155,200))
time.sleep(5)
screen.fill(black)


pg.display.flip()
clock.tick(15)

我希望此功能通过显示“deadText”变量来工作,然后等待 5 秒,然后屏幕被清除,并显示另一段文本,用户可以在其中输入他们的名字。该代码最初是通过显示“deadText”变量来工作的,但是自从我添加了 sleep 时间后,程序就崩溃了,根本没有任何错误消息。

我想知道如何获得 5 秒的延迟,然后清除屏幕,以便您能够显示新文本。

最佳答案

你应该(几乎)永远不要用 time.sleeppygame.time.wait 暂停游戏的执行,因为它(几乎)总是错误的做。

在您的代码中,您告诉 pygame 将文本呈现到屏幕表面,然后等待一段时间。

screen.blit(deadText, (155,200))
time.sleep(5)

第一个问题是,告诉 pygame 改变屏幕表面不会实际上改变屏幕上的某些东西。只有在您告诉 pygame 使用 pygame.display.flip(或 pg.display.flip())实际更新屏幕之后,任何结果才会可见> 在你的情况下)。


第二个问题是,当游戏等待时(例如 time.sleep),一切 都会停止。因此,如果您等待 5 秒,用户将无法执行,例如在此期间关闭窗口,因为不会处理事件。对于只显示一些文本的简单场景来说,这可能没问题,但如果您没有意识到这一点,就会遇到严重的麻烦。您可以使用 pygame 的事件系统(例如 here ),使用计时器来持续检查时间甚至计算帧数。

另一件事是,您可能应该将不同的场景组织成实际的场景,也许看看here举个例子。

关于python - 在 while 循环内延迟 (Python/Pygame),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41953965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com