我一直得到这个类型的error TypeError:detectCollisions()正好接受8个参数(给定9个)
def detectCollisions(x1,y1,w1,h1,x2,y2,w2,h2,):
if (x2+w2>=x1>=x2 and y2+h2>=y1>=y2):
return True
elif (x2+w2>=x1+w1>=x2 and y2+h2>=y1>=y2):
return True
elif (x2+w2>=x1>=x2 and y2+h2>=y1+h1>=y2):
return True
elif (x2+w2>=x1+w1>=x2 and y2+h2>=y1+h1>=y2):
return True
else:
return False
def update(self,gravity,blocklist):
if(self.velocity<0):
self.falling=True
blockX,blockY=0,0
collision=False
for block in blocklist:
collision = self.detectCollisions(self.x, self.y, self.width, self.height, block.x, block.y, block.width, block.height)
我不确定它有什么问题,我已经添加了一个def来检测碰撞
我确信您在方法声明中遗漏了
self
第一个参数应该是
self
,然后是自定义参数。在当调用它时,
self
被隐式传递(因此,当您在调用中仅使用8个参数时,它将获得9个参数)这是学习python的一个典型问题。 成员函数中的第一个参数始终是“self”参数。 它被包括在“幕后”中。在
这就是为什么当你只给出8个论点时,它会说9个论点。 下面是一个类声明,演示一下代码:
第一个调用有效,第二个调用无效,您将得到典型的错误消息。 这也反过来说,您总是必须在声明中添加“self”参数。在
相关问题 更多 >
编程相关推荐