当我运行此程序并进入下一阶段时,它输出以下内容:
我不确定为什么会这样,因为我在这里制作了Up
的表面:Up = pygame.image.load('up.png').convert()
我希望它能够出现在您放置在这里的x和y坐标上:{{1 }}
ups.append(Up(500, 700, 70, 90))
这是我的代码:
Traceback (most recent call last):
File "D:\Coding\Python\Escape\main.py", line 291, in <module>
redrawGameWindow()
File "D:\Coding\Python\Escape\main.py", line 124, in redrawGameWindow
up.draw(win)
File "D:\Coding\Python\Escape\main.py", line 77, in draw
win.blit(Up, (self.x, self.y))
TypeError: argument 1 must be pygame.Surface, not type
答案 0 :(得分:1)
问题是,因为您使用过两次Up
名称。首先,您将其用于变量:
Up = pygame.image.load('up.png').convert()
您上次在课堂上使用过它:
class Up(object): def __init__(self, x, y, width, height): # [...]
您必须对类和变量使用不同的名称! Up
可以是一个变量(在全局名称空间中)或一个类,但不能同时是两者。
请参见Style Guide for Python Code。函数名称应为小写(Function and Variable Names),类名称通常应使用CapWords约定(Class Names)。这些只是指南,但我建议您遵循它们。
将变量名称从Up
更改为up
,以解决问题:
up = pygame.image.load('up.png').convert()
Speed