我正在创建一个对象块,我在其他参数中分配了一个X和Y位置,我希望能够通过方法move()
按x
和y
单位移动它,并更新原始的x
和y
位置,以便在移动对象之前调用say xyRange()
时,我得到原始的x
,y
位置,当我在move()
之后这样做时,我得到了更新的x
,y
位置。你知道吗
下面是我尝试过的,但我认为我遗漏了一些关键的方面,因为我得到了一个错误,我的对象“Block”没有这样的属性。你知道吗
def X(self):
x = self.xPosition
return x
def Y(self):
y = self.yPosition
return y
def xyRange(self):
xRange = self.X() + self.toBlock.absX()
yRange = self.Y() + self.toBlock.absY()
return xRange, yRange
def move(self, moveX=None, moveY=None):
absX = self.absX()
absY = self.absY()
self.moveX = moveX
if(self.moveX == None):
moveX = 0
self.moveY = moveY
if(self.moveY == None):
moveY = 0
absoluteX = absX + moveX
absoluteY = absY + moveY
return absoluteX, absoluteY
def absX(self):
absoluteX = self.X() + self.toBlockId.absX()
return absoluteX
def absY(self):
absoluteY = self.Y() + self.toBlockId.absY()
return absoluteY
所以我有函数X()
和Y()
从构造函数中获取参数,并且能够在其他函数中操作它们,还有absX()
和absY()
来跟踪对象在网格中的实际位置,还有xyRange()
函数,它基本上做相同的事情,但是只返回x
的元组,y
参数(假设为方便起见)。但我似乎不知道如何更新我原来的X和Y位置。你知道吗
假设我从返回(2, 2)
的block1.xyRange()
开始
然后我block1.move(2, 2)
,当我再次运行block1.xyRange()
时,您会期望它返回(4, 4)
。但是如果我尝试将move函数中的self.moveX
和self.moveY
参数添加到X()
和Y()
函数中,我会得到一个错误,即对象“Block”没有属性“moveX”或“moveY”。我想这是因为它在召唤自己。但我不知道怎么修。你知道吗
如有任何建议,将不胜感激。你知道吗
在move方法中,您忘记为对象字段设置更新的(absoluteX和absoluteY)值(自我定位以及自我定位). 这就是为什么你永远得不到更新的值。你知道吗
相关问题 更多 >
编程相关推荐