Codecombat 游戏攻略——JavaScript编辑语言——关卡(计算机科学三)Ⅱ

第21关:有用的对手

// 这片满是硬币的地方暗藏了致命的毒药。
// 食人魔正在进攻,而差役尝试偷你的硬币!
while (true) {
    var enemy = hero.findNearestEnemy();
    if (enemy) {
        // 只在敌人类型不是 "peon" 的时候攻击。
        if (enemy.type != "peon") {
            hero.attack(enemy);
        }
    }
    var item = hero.findNearestItem();
    if (item) {
        // 只在物品的类型不是 "poison" 的时候捡起。
        if (item.type != "poison") {
            hero.moveXY(item.pos.x, item.pos.y);
        }
    }
}

第22关:奇境

// 你需要收集几种物品。
// 不过,树精想要宝石!
// 拿走所有出现的物品,除了宝石。
while (true) {
    var item = hero.findNearestItem();
    if (item) {
        // 如果item.type不等于"gem":
        if (item.type != "gem") {
            // 移动到物品的位置。
            hero.moveXY(item.pos.x, item.pos.y);
        }
    }
}

第23关:被诅咒的梦境

// 自从我们上次访问梦境就已经被改变了。
// 食人魔诅咒了它,我们应该击败它们。
// 树精仍然在收集宝石,所以别碰它们。
// 并且不要攻击树精。
while (true) {
    // 找到最近的物品。
    // 只有在它(如果它存在)的类型不是"gem"才收集它
    var item = hero.findNearestItem();
    if (item) {
        if (item.type != "gem") {
            hero.moveXY(item.pos.x, item.pos.y);
        }
    }
    // 找到最近的敌人。
    // 如果它存在并且类型不是"burl",则攻击他。
    var enenmy = hero.findNearestEnemy();
    if (enenmy) {
        if (enenmy.type != "burl") {
            hero.attack(enenmy);
        }
    }
}

第24关:宝石或者死亡

// if语句只在相应条件成立时才会运行。
// 修复所有if语句的条件表达式来通过本关。
// ==的意思是"等于"。
if (1 + 1 + 1 == 4) {
    // ? 让该条件不成立。
    hero.moveXY(5, 15);    // 移动到第一个雷区的位置。
}
if (2 + 2 == 4) {
    // ? 让该条件成立。
    hero.moveXY(15, 40);    // 移动到第一枚宝石的位置。
}
// !=的意思是"不等于"。
if (2 + 2 == 4) {
    // ? 让该条件成立。
    hero.moveXY(25, 15);    // 移动到第二枚宝石的位置
}
// <的意思是"小于"。
if (2 + 2 > 3) {
    // ? 让该条件成立。
    var enemy = hero.findNearestEnemy();
    hero.attack(enemy);
}
if (2 > 4) {
    // ? 让该条件不成立。
    hero.moveXY(40, 55);
}
if (false) {
    // ? 让该条件不成立。
    hero.moveXY(50, 10);
}
if (true) {
    // ? 让该条件成立。
    hero.moveXY(55, 25);
}

第25关:Burl和布尔

// 一个布尔值要么是真,要么是假。
// ==符号表示 "是否等于?"
// 因此, A == B 是在问:"A是否等于B?"
// 答案是一个布尔值!
// 如果没懂,请点"Hints"按钮来获得提示!
// 问题: 2 == 3
// 说出正确的答案:
hero.say(false);
// 问题: 3 == 3
// 回答 true 或者 false 2:
hero.say(true);
// 问题: "Three" == 3
// 回答 true 或者 false 3:
hero.say(false);
// 问题: "Three" == "Three"
// 回答 true 或者 false 4:
hero.say(true);
// 问题: 1 + 2 == 3
// 回答 true 或者 false 5:
hero.say(true);

第26关:盐碱地

// 食人魔正在攻击附近的一个定居点!
// 小心,食人魔在地上放了毒药。
// 收集硬币并击败食人魔,但要避免树精和毒药!
while (true) {
    var enemy = hero.findNearestEnemy();
    if (enemy.type == "munchkin" || enemy.type == "thrower") {
        hero.attack(enemy);
    }
    var item = hero.findNearestItem();
    // 检查物品类型,确保英雄不会捡起毒药!
    // 如果物品的类型是"gem"或"coin":
    if (item.type == "coin" || item.type == "gem") {
        // 那么移动并将其捡起:
        hero.moveXY(item.pos.x, item.pos.y);
    }
}

第27关:流星雨

// 只在硬币距离小于20米时才捡起硬币。
// 捡起所有的宝石。
while (true) {
    var item = hero.findNearestItem();
    var distance = hero.distanceTo(item);
    // 如果物品的类型是"gem"
    // 或到物品的距离小于20米:
    if (item.type == "gem" || distance < 20) {
        // 移动到物品的位置。
        hero.moveXY(item.pos.x, item.pos.y);
    }
}

第28关:森林影子

// 大食人魔在森林里看不到你。
// 只攻击森林里的小食人魔。
// 只收集硬币和宝石。
// 不要离开森林,不要吃喝任何东西。
while (true) {
    // 找到最近的敌人。
    var enemy = hero.findNearestEnemy();
    // 只有当类型是"thrower"或"munchkin"时才攻击。
    if (enemy.type == "thrower" || enemy.type == "munchkin") {
        hero.attack(enemy);
    }
    // 找到最近的物品。
    var item = hero.findNearestItem();
    // 只有当类型是"gem"或"coin"时才收集。
    if (item.type == "gem" || item.type == "coin") {
        hero.moveXY(item.pos.x, item.pos.y);
    }
}

第29关:春雷

// 某些硬币和宝石会引来雷电。
// 英雄应该只收集银币和蓝宝石。
while (true) {
    var item = hero.findNearestItem();
    // 一枚银币的价值是2。
    // 如果item.type等于"coin",则收集
    // 且item.value等于2。
    if (item.type == "coin" && item.value == 2) {
        hero.moveXY(item.pos.x, item.pos.y);
    }
    // 一枚蓝宝石的价值是10。
    // 如果item.type等于"gem",则收集
    // 且item.value等于10。
    if (item.type == "gem" && item.value == 10) {
        hero.moveXY(item.pos.x, item.pos.y);
    }
}

第30关:传送套索

// 我们的巫师把食人魔从它们的营地传送过来。
// 它们出现的时间很短,且处于晕厥状态。
// 只攻击弱小和近邻的食人魔。
while (true) {
    var enemy = hero.findNearestEnemy();
    var distance = hero.distanceTo(enemy);
    // 如果enemy.type是"munchkin"
    // 且距离小于20米。
    if (enemy.type == "munchkin" && distance < 20) {
        // 则攻击它。
        hero.attack(enemy);
    }
}

第31关:狩猎斗士

// 不要担心小型和中型食人魔。
// 你的射击目标类型是"brawler"。
// 当"brawler"的距离小于50米时,用大炮射击。
while (true) {
    // 找到最近的敌人,并确定与它的距离。
    var enemy = hero.findNearestEnemy();
    var distance = hero.distanceTo(enemy);
    // 如果敌人的类型是"brawler"
    // 且距离它不到50米,
    // 那就说"Fire!",命令大炮开火。
    if (enemy.type == "brawler" && distance < 50) {
        hero.say("Fire!");
    }
}

第32关:平常的一天

// 打败食人魔矮人,收集硬币。一切都那么平常。
// 使用与(AND),只需一条语句就能检查存在性和类型。
while (true) {
    var enemy = hero.findNearestEnemy();
    // 使用与(AND)以后,我们只会在敌人存在时检查类型。
    if (enemy && enemy.type == "munchkin") {
        hero.attack(enemy);
    }
    // 寻找最近的物品
    var item = hero.findNearestItem();
    // 如果存在且类型为"coin",则收集该物品。
    if (item && item.type == "coin") {
        hero.moveXY(item.pos.x, item.pos.y);
    }
}

第33关:逻辑之路

// 从巫师那得到两个秘密的true/false值。
// 查看提示,可以了解如何编写逻辑表达式。
hero.moveXY(14, 24);
var secretA = hero.findNearestFriend().getSecretA();
var secretB = hero.findNearestFriend().getSecretB();
// 如果 secretA 和 secretB 都为真,走上面的路;否则,走下面。
var secretC = secretA && secretB;
if (secretC)
    hero.moveXY(20, 33);
else
    hero.moveXY(20, 15);
hero.moveXY(26, 24);
// 如果 secretA 或 secretB 有一个为真,走上面;否则,走下面。
var secretD = secretA || secretB;
if (secretD) {
    hero.moveXY(32, 33);
} else {
    hero.moveXY(32, 15);
}
hero.moveXY(38, 24);
// 如果 secretB 非真,走上面;否则,走下面。
var secretE = !secretB;
if (true) {
    hero.moveXY(44, 15);
} else {
    hero.moveXY(50, 24);
}
hero.moveXY(50, 24);

第34关:逻辑之圈

// 移动到巫师旁,获得他的秘密值。
hero.moveXY(20, 24);
var secretA = hero.findNearestFriend().getSecretA();
var secretB = hero.findNearestFriend().getSecretB();
var secretC = hero.findNearestFriend().getSecretC();
// 如果所有三个值都为真,则走上面。
// 否则,往下走。保存第四个值。
var secretD = secretA && secretB && secretC;
if (secretD)
    hero.moveXY(30, 33);
else
    hero.moveXY(30, 15);
// 如果三个值中的任何一个为真,则往左走。
// 否则,向右走。保存第五个值。
var secretE = secretA || secretB || secretC;
if (secretE) {
    hero.moveXY(20, 24);
} else {
    hero.moveXY(40, 24);
}
// 如果所有五个值都为真,则走上面。
// 否则,走下面。
var secretF = secretA && secretB && secretC && secretD && secretE;
if (secretF) {
    hero.moveXY(30, 33);
} else {
    hero.moveXY(30, 15);
}

第35关:逻辑结论

// 移动到 ‘Eszter‘ 身边,从她那得到三个秘密值。
hero.moveXY(24, 16);
var secretA = hero.findNearestFriend().getSecretA();
var secretB = hero.findNearestFriend().getSecretB();
var secretC = hero.findNearestFriend().getSecretC();
// 如果A AND B为真,或者如果C为真,对‘Tamas‘说"TRUE"。否则说"FALSE"
// 记得用括号让逻辑顺序正确。
var tam = secretA && secretB || secretC;
hero.moveXY(19, 26);
hero.say(tam);
// 如果A OR B为真,且如果C为真,对‘Zsofi‘说"TRUE"。否则说"FALSE"
var zso = (secretA || secretB) && secretC;
hero.moveXY(26, 36);
hero.say(zso);
// 如果A OR C为真,且如果B OR C为真,对‘Istvan‘说"TRUE"。否则说"FALSE"
var ist = (secretA || secretC) && (secretC || secretB);
hero.moveXY(37, 34);
hero.say(ist);
// 如果A AND B为真,或者如果B为真且C为非真,对‘Csilla‘说"TRUE"。否则说"FALSE"
var csi = secretA && secretB || (secretB || !secretC);
hero.moveXY(40, 22);
hero.say(csi);

第36关:强壮的沙牦牛

// 当牦牛靠近时,向右移动10米来躲避。
// 躲避4头牦牛来通过此关。
while (true) {
    // 获取英雄当前位置的x和y坐标。
    var x = hero.pos.x;
    var y = hero.pos.y;
    // 找到最近的耗牛。
    var yak = hero.findNearestEnemy();
    // 如果到牦牛的距离小于10:
    if (hero.distanceTo(yak) < 10) {
        // 向右移动,在英雄位置的x坐标值基础上加10。
        var x = hero.pos.x;
        var y = hero.pos.y;
        x = x + 10;
        // 使用moveXY(x, y)来移动!
        hero.moveXY(x, y);
    }
}

第37关:绿洲

// 向右移动以到达绿洲,
// 向左移动以避免附近的牦牛。
while(true) {
    var x = hero.pos.x;
    var y = hero.pos.y;
    var enemy = hero.findNearestEnemy();
    if (enemy && hero.distanceTo(enemy) < 10) {
        // 用x减10来向左移动。
        x -= 10;
        // 使用moveXY移动到新的x,y位置。
        hero.moveXY(x, y);
    } else {
        // 用x加10来向右移动。
        x += 10;
        // 使用moveXY移动到新的x,y位置。
        hero.moveXY(x, y);
    }
}

第38关:Sarven路

// 朝绿洲前进。小心新的敌人:食人魔侦察兵!
// 通过增加当前的x和y坐标值来向右上移动。
while (true) {
    // 如果有敌人,则攻击。
    var enemy = hero.findNearestEnemy();
    if (enemy) {
        hero.attack(enemy);
    }    // 否则,继续向右上移动。
    else {
        var xPos = hero.pos.x;
        var yPos = hero.pos.y;
        xPos = xPos + 5;
        yPos = yPos + 5;
        hero.moveXY(xPos, yPos);
    }
}

第39关:Sarven间隙

// 每次向下移动10米,朝绿洲移动。
// 在每个食人魔左边20米的位置建造围栏。
while (true) {
    var enemy = hero.findNearestEnemy();
    if (enemy) {
        // 在敌人左边20个单位处使用buildXY建造一段"fence"
        hero.buildXY("fence", enemy.pos.x - 20, enemy.pos.y);
    } else {
        // 向下使用moveXY移动10米。
        var xPos = hero.pos.x;
        var yPos = hero.pos.y;
        yPos = yPos - 10;
        hero.moveXY(xPos, yPos);
    }
}

第40关:十字路口

// 使用 "fire-trap"打败食人魔。
while (true) {
    var enemy = hero.findNearestEnemy();
    if (enemy) {
        // 如果敌人在英雄的左侧:
        if (enemy.pos.x < hero.pos.x) {
            // 在左侧X处使用buildXY建造一个"fire-trap"。
            hero.buildXY("fire-trap", 25, 34);    // 如果敌人在英雄的右侧:
        } else if (enemy.pos.x > hero.pos.x) {
            // 在右侧X处使用buildXY建造一个"fire-trap"。
            hero.buildXY("fire-trap", 55, 34);    // 如果敌人在英雄下面。
        } else if (enemy.pos.y < hero.pos.y) {
            // 在下面的X处使用buildXY建造一个"fire-trap"。
            hero.buildXY("fire-trap", 40, 19);    // 如果敌人在英雄上面。
        } else if (enemy.pos.y > hero.pos.y) {
            // 在上面的X处使用buildXY建造一个"fire-trap"。
            hero.buildXY("fire-trap", 40, 49);
        }
    }
    // 移动回中心。
    hero.moveXY(40, 34);
}

原文地址:https://www.cnblogs.com/shihaiying/p/11689618.html

时间: 2024-10-31 03:00:22

Codecombat 游戏攻略——JavaScript编辑语言——关卡(计算机科学三)Ⅱ的相关文章

【网易官方】极客战记(codecombat)攻略-森林-跃火林中forest-fire-dancing

有人忘了扑灭他们的篝火!使用嵌套 if 躲避火球. 简介 你可以在一个 if语句 内嵌套 (nest) 另一个 if语句 做出更复杂的选择. 用这个技能找到安全点,避开火球! 默认代码 敬请期待 概览 现在的处境可能让你想起了上一关,焰中舞动,不过这次你得同时应付两个火球了!在上方,火球随机出现,所以你不能直接来回走. 决定安全地点的方法需要更巧妙: 如果在地图一侧看到宝石,赶快远离,移动到地图的另一侧. 如果没有宝石,就移动到中间. 嵌套 If 结构 为了让你的计划得手,你需要用上嵌套 (ne

【网易官方】极客战记(codecombat)攻略-森林-巫师的平面化the-wizards-plane

进入星际平面,面对最严厉的数学家. 简介 你已经把你的道路变成了一个神秘的现实交替的层面.虽然有最聪明的巫师住在这里,但你一定可以找到他们的秘密宝藏. 这些狡猾的巫师编织复杂的咒语,不会让冒险家轻易闯入.使用括号来确定公式的正确顺序! 仔细听每个巫师说的,分析出每个魔法数的计算方法.你需要依次对付一个巫师. 默认代码 # 移动到'Eszter'并从她那里得到秘密号码. hero.moveXY(16, 32) esz = hero.findNearestFriend().getSecret() #

【网易官方】极客战记(codecombat)攻略-森林-Burls教你学布尔burls-beets-booleans

你能战胜 Burl 的布尔问题吗? 简介 对于 Burl 的问题,回答 true 真 或者 false 假! 要看看每一行上面的注释哦! 默认代码 # 布尔值要么是真 True 要么是假 False # == 表示 ”等于吗“? # 所以, A == B 是在问:”A 是等于 B吗?“ # 答案会是一个布尔值! # 如果太难了,点一下”Hints“ 提示按钮! # 问题: 2 == 3 # 回答正确的答案: hero.say(False) # 问题: 3 == 3 # 回答 True 真 或者

【网易官方】极客战记(codecombat)攻略-森林-If 的盛宴

关卡连接:https://codecombat.163.com/play/level/if-stravaganza 免费试玩:https://codecombat.163.com/play 食人魔从四面八方围攻!等待时机,攻击突围! 简介 使用 if 语句判别周围是否存在食人魔,以此进行防御! 没有敌人时不要攻击!别把英雄弄糊涂了. 默认代码 # 在食人魔的营地中打败它们! while True: enemy = hero.findNearestEnemy() if enemy: # 使用一个

【网易官方】极客战记(codecombat)攻略-森林-野餐毁灭者

关卡连接:https://codecombat.163.com/play/level/picnic-buster 免费试玩:https://codecombat.163.com/play 从巡逻的食人魔手中保护野餐者. 简介 使用 if 语句保护露营的人们,在食人魔进攻时挺身而出. if 语句对程序员来说至关重要,它们看起来像这样: enemy = hero.findNearestEnemy() if enemy: hero.attack(enemy) 默认代码 # 记得敌人可能还不存在. wh

【网易官方】极客战记(codecombat)攻略-森林-巡逻兵克星A

关卡连接:https://codecombat.163.com/play/level/patrol-buster-a 免费试玩:https://codecombat.163.com/play 使用最新的目标选择确定技能击退食人魔巡逻兵. 简介 您现在可以访问强大的 if 语句. 请在右下角中查看 Programmaticon II 的工具栏以获取更多信息. if 语句是程序员的基本工具. 通过键入来创建它们: enemy = hero.findNearestEnemy() if enemy: h

【网易官方】极客战记(codecombat)攻略-森林-村庄守护者

关卡连接:https://codecombat.163.com/play/level/village-guard 免费试玩:https://codecombat.163.com/play 从食人魔的劫掠中保护村庄 简介 在村庄的入口处巡逻,使用 if 语句检查是否有敌人. 默认代码 # 在村口巡逻. # 如果发现敌人,就攻击它. while True: hero.moveXY(35, 34) leftEnemy = hero.findNearestEnemy() if leftEnemy: he

【网易官方】极客战记(codecombat)攻略-森林-食人魔营地-ogre-encampment

关卡连接:https://codecombat.163.com/play/level/ogre-encampment 免费试玩:https://codecombat.163.com/play 从食人魔营地夺回被盗的财宝 简介 如果有敌人,攻击之.否则,攻击宝箱. 默认代码 # 如果有敌人,那么就攻击它 # 否则,攻击宝箱 while True: # 使用if/else语句 hero.attack("Chest") 概览 这关你需要同时用上 if 和 else .记得 else 对应的代

【网易官方】极客战记(codecombat)攻略-森林-森林劈斩者woodland-cleaver

关卡连接:https://codecombat.163.com/play/level/woodland-cleaver 免费试玩:https://codecombat.163.com/play 使用新的 cleave 能力抵御食人魔矮人 简介 你有一把新的剑,它有一个方法 cleave() : 你还有一块新的腕表,它有一个方法 isReady() cleave() 是攻击周围所有敌人的特殊攻击技能,但两次使用之间会有冷却时间. 在你使用 cleave() 前, 你得检查一下它是否准备好了: if