(点击图片进入关卡)
写点聪明的代码来追赶远方的敌人。
简介
烦人的诱饵扰乱你的视线。
寻找最远的敌人,因为诱饵会缠绕在你身边。
最远的敌人有最大的 distanceTo 。
默认代码
# 优先杀掉最远的敌人。
while True:
farthest = None
maxDistance = 0
enemyIndex = 0
enemies = hero.findEnemies()
# 查看全部敌人,找出最远的那个。
while enemyIndex < len(enemies):
target = enemies[enemyIndex]
enemyIndex += 1
# 是不是存在远得看不到的敌人?
distance = hero.distanceTo(target)
if distance > maxDistance:
maxDistance = distance
farthest = target
if farthest:
# 干掉最远的敌人!
# 如果敌人血量大于0就保持攻击。
pass
概览
这关的目标是首先瞄准最远的敌人。因为那才是攻击你的敌人,而其他的诱饵靠得很近。
示例代码告诉你怎么完成任务:使用 while 循环遍历敌人数组。
将 maxDistance 初始化为 0,这样第一个敌人怎样都比它远。
然后,对于数组里的每个敌人,你要把它的距离和 maxDistance 比较,如果大了,就把这个距离设置为 maxDistance ,并将对应的敌人赋值给 farthest 变量。
当你遍历完数组时, farthest 就包含了有最大距离的敌人。
然后,使用另一个循环在敌人生命值大于 0 时攻击。
疯狂的 Maxer解法
# 优先杀掉最远的敌人。
while True:
farthest = None
maxDistance = 0
enemyIndex = 0
enemies = hero.findEnemies()
# 查看全部敌人,找出最远的那个。
while enemyIndex < len(enemies):
target = enemies[enemyIndex]
enemyIndex += 1
# 是不是存在远得看不到的敌人?
distance = hero.distanceTo(target)
if distance > maxDistance:
maxDistance = distance
farthest = target
if farthest:
# 干掉最远的敌人!
# 如果敌人血量大于0就保持攻击。
while farthest.health > 0:
hero.attack(farthest)
本攻略发于极客战记官方教学栏目,原文地址为:
来源:oschina
链接:https://my.oschina.net/u/4441837/blog/4437802