You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 10:57:03