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
相关产品推荐
相关产品推荐

