当前位置: 首页 > 知识库问答 >
问题:

pygame在菜单之间切换导致崩溃:“视频系统未初始化”

王高超
2023-03-14

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

现在,按下“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()

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

提前感谢!

编辑:正如拉比76所说,在他的回答中,错误是我在“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()

共有1个答案

云承弼
2023-03-14

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

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

    while custom:
        # [...]

#<--| INDENTATION
pygame.quit()
 类似资料:
  • 这些是我的分级依赖项: 这是崩溃日志 致命异常:主进程:com.example.myapp,pid:16817 java.lang.nosuchmethoderror:LCOM/mapbox/services/android/telemetry类中没有虚拟方法初始化(Landroid/content/context;LJava/lang/string;LJava/lang/string;LCOM/

  • 问题内容: 我设法使通知在较旧的API中起作用,但在Oreo中不起作用。创建通知会导致我的应用程序仍然可以正常运行(logcat中没有消息),但是在Activity运行时,SystemUI崩溃并以无休止的周期重启。这是systemcat进程的logcat错误: 我的代码: 我在创建的MediaPlayerService的onCreate上初始化了mNotificationUtils。 问题答案:

  • 当我初始化的元素应用程序崩溃,如果我不初始化任何元素的应用程序显示的布局只是罚款和做一些基本的功能,我已经添加了使用在XML的onClick属性的方法 我需要从EditText元素中提取数据来进行计算。 java代码: 坠机记录: 致命例外:主进程:com.ajaydubey.fifamobilebulktradeprofitcounter,PID:17627java.lang.运行时异常:无法启

  • 我知道这类问题已经被问过很多次了。但是我非常努力地搜索,并尝试了各种建议,但没有一个奏效。这类东西真的不在我的驾驶室里,我不知道我在做什么。 疯狂的是,我昨天实际上已经做了这项工作,今天我发誓我没有改变任何东西,突然间它不起作用了。 我正在运行“xming服务器”,我相信它应该允许X11在Windows中工作(昨天确实如此!)。 这是我的代码(从教程中复制并粘贴): 输出: pygame 1.9.

  • 我正在现有的自动化框架中配置allure报表,该框架由Java、maven、cucumber和junit组成。我已经按照allure文档正确地配置了它(https://docs.qameta.io/allure/#_cucumber_jvm)但是当我运行mvn测试时,它给出了以下异常:分叉的VM没有正确地说再见就终止了。虚拟机崩溃或系统崩溃。出口呼叫。。。 它无法加载"-Dcucumber.opt

  • 尝试开始Android开发,并使用文本视图做一些基本工作。。 由于某种原因,TextView的setText()方法给我带来了很大的问题..下面是我的代码的简化版本,以说明我的意思: 这将导致崩溃,我不明白为什么..如果我在onCreate中创建文本视图,它工作得很好,但是如果我在它之外创建它,就不行了..这是为什么呢?有一行“文本视图文本;还没被处决还是怎么的? 谢谢!