所以我正在写一个方法,它会告诉我最近的敌人
ef nearestEnemy(player, *args):
nearest = 0
list = [args]
print(list)
for x in list:
if player.getDistancetoEnemy(list[x]) > nearest:
nearest = list[x]
它总是给我一个错误:
def近邻敌人(玩家,*args): 最近值=0 列表=[args] 打印(列表) 对于列表中的x: if player.getDistanceToEnmy(列表[x])>;最近的: 最近的=列表[x]
这是我的主要观点:
def main():
dragon1 = dragon()
dragon2 = dragon()
player1 = player()
player1.setPosition(100, 100)
dragon1.setPosition(200, 200)
dragon2.setPosition(150, 150)
nearestEnemy(player1, dragon1, dragon2)
这就是让我与敌人保持距离的方法:
def getDistancetoEnemy(self, enemy):
return math.sqrt(pow(enemy.getPosition()[0] - self.x, 2) + pow(enemy.getPosition()[1] - self.y, 2))
谢谢你的帮助,祝你度过一个美好的夜晚
当使用“*args”时,变量
args
是一个tuple
。因此,list = [args]
将成为>list = [(player1, dragon1, dragon2)]
因此
for
循环用于从元组中获取各个元素:在这方面:
变量
x
是一个tuple
。因此list[x]
失败,您应该使用索引来查找,而不是列表中的实际元素(x)直接使用
x
而不是list[x]
,或者将for循环条件更改为:然后使用
list[i]
相关问题 更多 >
编程相关推荐