首页 > 解决方案 > Pygame对屏幕的奇怪影响,分段错误和崩溃

问题描述

这些天我遇到了一个严重的问题,这是终端抛出的分段错误(核心转储)错误。

当我输掉后回到菜单然后再次播放时,会出现此问题。

这正是发生的事情:

分段错误错误

上图中显示的窗口会立即出现,然后关闭。

顺便说一句,在我正在开发的游戏中,帧数限制为 50,而我的笔记本电脑是游戏机,所以我不知道这次崩溃的原因是什么,但我认为是代码造成的。

这是当我尝试返回菜单然后再次播放时运行的一段代码:

# this is inside the main loop in the game function
for event in events:
    if event.type == KEYDOWN:
        if event.key == K_c: # back to menu
            pygame.quit()
            main_menu()

# this is inside the main_menu() function
if play_button.get_rect(x=320, y=270).colliderect(cursor_rect) and pygame.mouse.get_pressed()[0]:
        pygame.quit()
        pilot()
                

更新 :

  1. 发生错误时没有显示特定的错误消息,但所有错误消息都包含该core dumped问题。

    例如:corrupted size vs. prev_size Aborted (core dumped)

  2. 经过一番研究,我发现这个问题可能与 pygame 和 Ubuntu (linux) 之间的兼容性问题有关,我顺便在 Linux Mint 上编码。

标签: pythonpygamecrash

解决方案


现在,我已经成功解决了这个问题,它与多个pygame.display.set_mode()呼叫有关。

我一直在为每个菜单和游戏创建一个窗口,这导致了分段错误(核心转储)错误。

根据评论中的@furas,pygame.init()应该pygame.display.set_mode()只调用一次,而pygame.quit()只有在退出整个程序时才需要调用。


推荐阅读