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

Pygame调用screen.blit显示剩余子弹数时触发TypeError: invalid destination position for blit错误的求助

解决Pygame中screen.blit()的TypeError:invalid destination position for blit

嘿,这个错误的原因很明确,不是拼写问题,是你给screen.blit()传参数的方式错啦!

问题根源

Pygame的screen.blit()方法要求第二个参数必须是包含x和y坐标的单个元组,格式是(x, y)。但你在循环里的代码写成了:

screen.blit(bullet_img, (90 + (x * 10)), 40)

这里你把x坐标(90 + x*10)作为第二个参数,y坐标40作为第三个参数单独传递,这完全不符合blit方法的参数要求,所以才会抛出invalid destination position的错误。

修复方案

只需要把x和y坐标合并成一个元组,作为第二个参数传入即可:

while run:
    clock.tick(fps)
    draw_bg()
    # 显示弹药数
    draw_text("AMMO:", font, WHITE, 10, 35)
    for x in range(player.ammo):
        # 把x和y坐标放进同一个括号里,形成完整的坐标元组
        screen.blit(bullet_img, (90 + (x * 10), 40))
    # 显示手榴弹(代码未完整)

额外说明

再确认下bullet_img是否已经正确加载(比如通过pygame.image.load()),不过从错误类型来看,这个不是当前问题的核心——只要把坐标改成单个元组,这个TypeError就会消失啦。

内容的提问来源于stack exchange,提问作者Kenny Okoye

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 17:07:53