当我尝试在 pygame 中运行我的代码时,我不断收到此错误消息,它允许我打开窗口,但当我尝试输入方向键时,它会给我此错误代码。
in redraw_game_window
win.blit(walk_right[walkcount//3], (x, y))
TypeError: argument 1 must be pygame.surface.Surface, not str
它给出了代码错误
win.blit(walk_right[walkcount//3], (x, y))
这是在 elif right 语句下,但我想在 if left 语句下也会有同样的问题,因为它们是相同的
def redraw_game_window():
global walkcount
#win.blit(bg, (0, 0))
win.fill(GREY)
if walkcount + 1 >= 60:
walkcount = 0
if left:
win.blit(walk_left[walkcount//3], (x, y))
walkcount += 1
elif right:
win.blit(walk_right[walkcount//3], (x, y))
walkcount += 1
else:
win.blit(idle_down, (x, y))
pygame.display.update
在另一个项目中,我有几乎相同的代码,并且运行得很好,我比较了这两个项目以查看任何差异,但我找不到解决方案,我对 pygame 和编码比较陌生,所以我感谢任何帮助可以得到。
向左走的定义是向左走的精灵动画,都是一行。
walk_left = [pygame.image.load('art/Knight/move/KnightL1.png'), ('art/Knight/move/KnightL2.png'), ('art/Knight/move/KnightL3.png'), ('art/Knight/move/KnightL4.png')]
错误在这里:
walk_left = [pygame.image.load('art/Knight/move/KnightL1.png'), ('art/Knight/move/KnightL2.png'), ('art/Knight/move/KnightL3.png'), ('art/Knight/move/KnightL4.png')]
只有第一个项目是对 pygame.image.load 的调用,列表中的其他项目只是字符串。如果 pygame.image.load('art/Knight/move/KnightL1.png') 是加载图像的方式,则必须对列表中的每个项目执行此操作,如下所示:
walk_left = [pygame.image.load('art/Knight/move/KnightL1.png'), pygame.image.load('art/Knight/move/KnightL2.png'), pygame.image.load('art/Knight/move/KnightL3.png'), pygame.image.load('art/Knight/move/KnightL4.png')]