python - 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()
更新 :
发生错误时没有显示特定的错误消息,但所有错误消息都包含该
core dumped
问题。例如:
corrupted size vs. prev_size Aborted (core dumped)
经过一番研究,我发现这个问题可能与 pygame 和 Ubuntu (linux) 之间的兼容性问题有关,我顺便在 Linux Mint 上编码。
解决方案
现在,我已经成功解决了这个问题,它与多个pygame.display.set_mode()
呼叫有关。
我一直在为每个菜单和游戏创建一个窗口,这导致了分段错误(核心转储)错误。
根据评论中的@furas,pygame.init()
应该pygame.display.set_mode()
只调用一次,而pygame.quit()
只有在退出整个程序时才需要调用。
推荐阅读
- python - 如何在没有 WINWORD 的情况下解析 .doc 文档?
- nuxt.js - 生产环境中暴露的 Nuxt 环境变量
- algorithm - 为什么我们测量时间复杂度而不是步长复杂度?
- postgresql - EC2 ubuntu 机器无法连接到 PostgreSQL RDS
- python - 如何从 Django Queryset 中获取前 4 个对象
- node.js - 如何使用下划线在字符串数组中查找字符串的完全匹配
- javascript - 该脚本仅激活主菜单项。如何使代码适用于子项
- python - django:在带有注释的 Sum 函数中使用 if else 或 while else?无法计算总和('
我想为我的
Sum
函数设置一个条件,annotate
我尝试使用Case
When
但它在我的情况下不起作用这是我的models.py
- javascript - 在 UI 中处理 API 的数据和错误的流程
- css - 如何根据字符宽度在css中设置宽度?