我正在尝试制作游戏,我想在玩家移动之前保存其位置(oldPosition),以便以后使用。问题在于,到World.UpdateContents()运行时,oldPosition随self.position一起更新。当self.position改变时,如何保持oldPosition不变?
def Move(self, direction):
oldPosition = self.position
print oldPosition
if direction == "Up":
if self.position[0] - 1 in World.worldMap[0]:
self.position[0] -= 1
if direction == "Down":
if self.position[0] + 1 in World.worldMap[0]:
self.position[0] += 1
if direction == "Left":
if self.position[1] - 1 in World.worldMap[1]:
self.position[1] -= 1
if direction == "Right":
if self.position[1] + 1 in World.worldMap[1]:
self.position[1] += 1
print oldPosition
World.UpdateContents(world, oldPosition, self.position, self.icon)
最佳答案
属性position
是一个列表,当您将其分配给oldPosition
时,您将创建对该列表的引用,但是您对position
所做的任何修改也将反映在oldPosition
上-它们指向同一对象。要解决此问题,请首先复制position
,如下所示:
oldPosition = self.position[:]
现在,
oldPosition
是一个新的不同列表,并且不受position
所做更改的影响。关于python - 尝试存储类变量以供以后使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17914438/