在Pygame中,即使我使用pygame.image.load加载图像,win.blit也无法正常工作

时间:2020-02-24 06:09:58

标签: python pygame

当我运行此程序并进入下一阶段时,它输出以下内容: 我不确定为什么会这样,因为我在这里制作了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

1 个答案:

答案 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

也是如此
相关问题