Pygame运行报blit目标位置无效TypeError 角色不显示问题求助
报错原因
pygame.Surface.blit() 方法用于在窗口上绘制图像,固定接收2个核心必填参数:
- 第一个参数:待绘制的图像(Surface对象)
- 第二个参数:图像绘制的目标坐标,必须是包含x、y两个数值的元组/列表,不能是单个值,也不能把坐标拆成第三个参数传入。
你的报错代码win.blit(walkLeft,[walkCount//3], (x,y))存在两个参数错误:
- 传入了3个参数,超出了方法的参数要求,第二个参数传的是仅包含单个整数的列表
[walkCount//3],不符合坐标格式要求 - 多余的
[walkCount//3]属于帧动画逻辑的书写错误:这类写法原本用于多帧行走动画——即同一个方向的动作拆成多张图存在列表里时,用walkLeft[帧索引]取出当前帧显示,你既没有把方向图存为动画帧列表,又错误地把索引部分拆成了单独参数传给blit,直接触发类型错误。
另外代码还存在两个隐性问题:
- 编写了上下方向键的移动逻辑,但绘制函数里没处理
up/down状态的角色显示,按上下键时角色会消失 - 游戏循环结束后写的
pygame.QUIT是事件常量,不是退出方法,正确退出需要调用pygame.quit()
修复步骤
- 修正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()
- 修正游戏退出逻辑,把代码最末尾的
pygame.QUIT替换为方法调用:
pygame.quit()
修改完成后重新运行即可正常控制角色移动显示。
内容的提问来源于stack exchange,提问作者b.ferris
相关产品推荐
相关产品推荐

