【发布时间】:2019-05-10 08:17:38
【问题描述】:
这是我遇到问题的代码的相关部分。 player.x 和 player.y 在调试控制台中出现“AttributeError: type object 'player' has no attribute 'x'”错误。我有一个名为“玩家”的单独类,我想在它四处移动时获得它的 x 和 y 坐标,以便敌人可以向它移动。这也是相关的播放器类开始部分:
class player(object):
def __init__(self, x, y, sprintMultiplier, fps):
self.x = x
self.y = y
self.vel = 1/fps * 150
class enemy(object):
def __init__(self, fps, difficulty):
pass
def draw(self, window):
self.moveTowardsPlayer()
window.blit(self.downStanding, (self.x, self.y))
def moveTowardsPlayer(self):
dx, dy = self.x - player.x, self.y - player.y
dist = math.hypot(dx, dy)
dx, dy = dx/dist, dy/dist
self.x += dx * self.vel
self.y += dy * self.vel
【问题讨论】:
-
愚蠢的说法,但可能是因为播放器类中 init 的标识,看起来需要再推一下 :) 是我下面的人,有了正确的答案,始终将您的 ClassNames 驼峰化,您引用的是类而不是 movetowards def 中的实例。
-
class player没有x或y属性。只有类的实例有。 -
向我们展示完整的错误信息,并向我们展示您如何创建播放器实例。
-
只是一个旁注:一旦你熟悉了三角函数,也可以看看向量,因为它们会让你的生活更轻松。这是一个简短的example,其中包含一个向鼠标移动的对象。
标签: python oop pygame attributeerror