Pygame飞船游戏触发RecursionError递归深度超限错误原因求解
问题解答
错误含义
RecursionError: maximum recursion depth exceeded 代表代码中的递归调用次数超过了Python默认允许的最大递归深度(默认值通常为1000),系统强制终止了程序运行。本次报错出现在str(REDhealth)行只是因为代码执行到这一行时刚好触碰到了递归深度阈值,并不是字符串转换本身的逻辑有问题。
根本原因
你在main()函数的末尾错误添加了一行main()调用,导致每执行完一次主循环逻辑,就会重新调用一次main()函数,形成无限递归:
- 游戏帧率设置为60FPS,每秒就会新增60层递归调用
- 运行30秒左右递归层数就会突破1000的默认限制,触发报错
修复方案
直接删除main()函数末尾的main()调用即可,游戏主逻辑本身已经有while run循环负责持续执行,不需要递归调用main()。
其他可修复的隐性问题
redmovement函数定义的第二个参数是yellow,但调用时传入的是red,虽然目前函数内部直接使用了全局red变量不影响运行,但属于参数定义错误,建议修改为def redmovement(keys_pressed, red):draw_window的参数顺序和调用时的传参顺序不匹配,你调用时传入的第三个参数是YELLOWbullets,但函数定义的第三个参数是REDbullets,会导致红方和黄方的子弹渲染颜色相反,建议调整传参顺序或者参数定义顺序- 检测到
pygame.QUIT事件调用pygame.quit()后,建议直接调用exit()终止程序,避免后续代码继续执行触发异常
内容的提问来源于stack exchange,提问作者Centauri
相关产品推荐
相关产品推荐

