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

Pygame运行报blit目标位置无效TypeError 角色不显示问题求助

报错原因

pygame.Surface.blit() 方法用于在窗口上绘制图像,固定接收2个核心必填参数:

  • 第一个参数:待绘制的图像(Surface对象)
  • 第二个参数:图像绘制的目标坐标,必须是包含x、y两个数值的元组/列表,不能是单个值,也不能把坐标拆成第三个参数传入。

你的报错代码win.blit(walkLeft,[walkCount//3], (x,y))存在两个参数错误:

  1. 传入了3个参数,超出了方法的参数要求,第二个参数传的是仅包含单个整数的列表[walkCount//3],不符合坐标格式要求
  2. 多余的[walkCount//3]属于帧动画逻辑的书写错误:这类写法原本用于多帧行走动画——即同一个方向的动作拆成多张图存在列表里时,用walkLeft[帧索引]取出当前帧显示,你既没有把方向图存为动画帧列表,又错误地把索引部分拆成了单独参数传给blit,直接触发类型错误。

另外代码还存在两个隐性问题:

  • 编写了上下方向键的移动逻辑,但绘制函数里没处理up/down状态的角色显示,按上下键时角色会消失
  • 游戏循环结束后写的pygame.QUIT是事件常量,不是退出方法,正确退出需要调用pygame.quit()
修复步骤
  1. 修正blit调用参数,删除多余的错误索引参数,补全上下方向的绘制逻辑。修改后的redrawGameWindow函数如下:
def redrawGameWindow():
    global walkCount
    
    win.blit(bg, (0,0))  # 在(0,0)位置绘制背景    
    if walkCount + 1 >= 27:
        walkCount = 0
        
    if left:
        win.blit(walkLeft, (x,y))
        walkCount += 1                          
    elif right:
        win.blit(walkRight, (x,y))
        walkCount += 1
    elif up:
        win.blit(walkUp, (x,y))
        walkCount += 1
    elif down:
        win.blit(walkDown, (x,y))
        walkCount += 1
    else:
        walkCount = 0
        
    pygame.display.update() 
  1. 修正游戏退出逻辑,把代码最末尾的pygame.QUIT替换为方法调用:
pygame.quit()

修改完成后重新运行即可正常控制角色移动显示。

内容的提问来源于stack exchange,提问作者b.ferris

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 21:09:25