「网易官方」极客战记(codecombat)攻略-沙漠-疯狂的 Maxer-mad-maxer

笑着哭i 提交于 2020-08-09 05:12:41
(点击图片进入关卡)

写点聪明的代码来追赶远方的敌人。

简介

烦人的诱饵扰乱你的视线。

寻找最远的敌人,因为诱饵会缠绕在你身边。

最远的敌人有最大的 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)
 
本攻略发于极客战记官方教学栏目,原文地址为:
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!