我正在做坦克游戏,我有坦克和子弹对象。当我火,则执行下面的方法:python对象改变属性
def newshot(self,tank):
shot = bullet()
shot.loc = tank.loc
shot.speed = tank.direction
self.shots.append(shot)
LOC是示出位置[X,Y]的列表,速度和方向都列出了显示的速度[DX,DY]。
为了移动每个子弹速度矢量被添加到它在for循环中的位置。但是每当我改变子弹的位置时,我的坦克的位置也发生了变化(我在for循环之前和之后打印出坦克位置)。 我这样做,解决了我的问题是,与其做
shot.loc = tank.loc
我做
shot.loc = [tank.loc[0],tank.loc[1]]
我的问题是,其中的区别?
你的意思是罐跟着子弹? – vaultah
您正在追加对另一个列表中的一个列表的引用。它看起来像你需要存储一份清单的副本。 – juanchopanza
我解决了这个问题,但是问题出在哪里,不同之处在于shot.loc = tank.loc和shot.loc = [tank.loc [0],tank.loc [1]] –