gpt4 book ai didi

python-3.x - pygame 在菜单之间切换导致崩溃 : "video system not initializated"

转载 作者:行者123 更新时间:2023-12-02 06:53:44 26 4
gpt4 key购买 nike

我是 pygame 的新手,我正在尝试为我的游戏制作菜单。现在,我想要两个不同的屏幕,一个显示在菜单中,另一个显示在游戏的“自定义”部分。我试图创建一个主循环和两个仅在应该运行时运行的内部循环。

现在,菜单和自定义之间的转换是通过按键“d”完成的。过渡到自定义菜单完美完成,但是自定义到菜单的过渡导致游戏崩溃

这是主循环:

while running:
while menu:
pygame.display.flip()
screen.blit(bg, (0, 0))
for event in pygame.event.get():
if (event.type == pygame.QUIT) or (event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE):
running = 0
menu = 0
elif (event.type == pygame.KEYDOWN and event.key == pygame.K_d):
custom = 1
menu = 0
while custom:
pygame.display.flip()
screen.blit(bgCustom, (0, 0))
for event in pygame.event.get():
if (event.type == pygame.QUIT) or (event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE):
running = 0
custom = 0
elif (event.type == pygame.KEYDOWN and event.key == pygame.K_d):
custom = 0
menu = 1
pygame.quit()

当我在“自定义时”并按“d”返回菜单时遇到的错误是“pygame.error:视频系统未初始化”。两者的逻辑似乎相同,所以我感到困惑。另外,我已经使用 pygame.init() 初始化了 pygame,所以这不是问题所在。有什么想法吗?

提前致谢!

编辑:正如 Rabbid76 所说,在他的回答中,错误是我在“pygame.quit()”中的身份。它停止了我的视频系统。唯一的问题是最后一行。下面的正确循环:
while running:
while menu:
pygame.display.flip()
screen.blit(bg, (0, 0))
for event in pygame.event.get():
if (event.type == pygame.QUIT) or (event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE):
running = 0
menu = 0
elif (event.type == pygame.KEYDOWN and event.key == pygame.K_d):
custom = 1
menu = 0
elif (event.type == pygame.KEYDOWN and event.key == pygame.K_1):
playMusic(1)
elif (event.type == pygame.KEYDOWN and event.key == pygame.K_2):
playMusic(2)
elif (event.type == pygame.KEYDOWN and event.key == pygame.K_0):
playMusic(0)
elif (event.type == pygame.KEYDOWN and event.key == pygame.K_3):
playMusic(3)

while custom:
pygame.display.flip()
screen.blit(bgCustom, (0, 0))
for event in pygame.event.get():
if (event.type == pygame.QUIT) or (event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE):
running = 0
custom = 0
elif (event.type == pygame.KEYDOWN and event.key == pygame.K_d):
custom = 0
menu = 1
pygame.quit()

最佳答案

这是 Indentation 的问题. while 中的最后一条语句循环是 pygame.quit() . pygame.quit() 取消初始化所有 pygame 模块。
调用 pygame.quit()循环之后。而不是在循环中:

while running:
while menu:
# [...]

while custom:
# [...]

#<--| INDENTATION
pygame.quit()

关于python-3.x - pygame 在菜单之间切换导致崩溃 : "video system not initializated",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62333150/

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