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


    第1关:尘埃

    // 使用循环直到你击杀10个Munchkins
    var attacks = 0;
    while (attacks < 10) {
        // 攻击最近的敌人!
        var enemy = hero.findNearestEnemy();
        if (enemy) {
            hero.attack(enemy);
        }
        // 增量意味着增加1。
        // “attacks" 变量加1
        attacks += 1;
    }
    // 当你完成后,撤退到伏击点。
    hero.say("I should retreat!");
    //∆ 别站在那儿瞎扯!赶紧撤回伏击点
    hero.moveXY(79, 33);

    第2关:复查

    // 第一点,打败6位ogres~
    // 然后收集硬币,直到你有30金。
    // 变量用来对ogres计数
    var defeatedOgres = 0;
    // 没打败6位ogres,就继续打
    while (defeatedOgres < 6) {
        var enemy = hero.findNearestEnemy();
        if (enemy) {
            hero.attack(enemy);
            defeatedOgres += 1;
        } else {
            hero.say("食人魔!");
        }
    }
    // 移到地图的右侧。
    hero.moveXY(49, 36);
    // 钱没攒够30块,就继续捡
    while (hero.gold < 30) {
        // 寻找并收集金币
        var item = hero.findNearestItem();
        if (item) {
            hero.moveXY(item.pos.x, item.pos.y);
        }    // 去掉这行 say()。
    }
    // 移动到出口。
    hero.moveXY(76, 32);

    第3关:山谷的风与牛

    // 沙漠风暴就要来了!
    // 沙牦牛能够预测到沙漠风暴来临
    // 这个变量做为循环的判断条件
    var yak = hero.findNearestEnemy();
    // 检查是否还有沙牦牛在场
    while (yak) {
        var item = hero.findNearestItem();
        if (item) {
            hero.moveXY(item.pos.x, item.pos.y);
        }
        // 更新变量`yak`的值
        // 使用findNearestEnemy()
        var yak = hero.findNearestEnemy();
    }
    // 牛没了!
    // 快去撤离点:红X
    hero.moveXY(38, 58);

    第4关:先有付出,才有回报

    // 改变while循环的条件。
    // 在英雄生命值大于200滴血时,一直跑。
    while (hero.health > 200) {
        // Δ 这行要改一下!
        hero.moveXY(48, 24);
        hero.moveXY(16, 24);
    }
    // 移动到Okar那里。
    hero.moveXY(32, 40);

    第5关:沙漠战役

    // while循环重复直到条件为否。
    var ordersGiven = 0;
    while (ordersGiven < 5) {
        // 向下移动10米
        var x = hero.pos.x;
        var y = hero.pos.y;
        y = y - 10;
        hero.moveXY(x, y);
        // 用hero.say命令你的盟友“进攻”!
        // 你只有站在X标志上,他们才能听你的
        hero.say("Attack!");
        // 确保 ordersGiven 要加1
        ordersGiven += 1;
    }
    while (true) {
        var enemy = hero.findNearestEnemy();
        // 当你下达完命令,立即加入战斗!
        if (enemy) {
            hero.attack(enemy);
        }
    }

    第6关:诱饵和开关

    // 使用诱饵引诱食人魔诱到陷阱中。
    // 这个函数让英雄持续收集金币,直到拥有enoughGold 数量的金币。
    function collectUntil(enoughGold) {
        // 当While hero.gold 小于 enoughGold:
        while (hero.gold < enoughGold) {
            // 找到一个硬币,并带走它:
            var coin = hero.findNearestItem();
            if (coin) {
                hero.moveXY(coin.pos.x, coin.pos.y);
            }
        }
    }
    // 收集25个金币,然后在红色标记上建造一个诱饵
    collectUntil(25);
    hero.buildXY("decoy", 40, 52);
    // 最好躲起来。
    hero.moveXY(20, 52);
    // 使用collectUntil函数收集50个金币:
    collectUntil(50);
    // 在骨骼标记上建立一个 "decoy" :
    hero.buildXY("decoy", 68, 22);
    // 在木质标记上建立一个 "decoy":
    hero.buildXY("decoy", 30, 20);

    第7关:海市蜃楼

    // 诱使食人魔陷入伏击!
    // 当你的黄金小于25时,收集金币。
    while (hero.gold < 25) {
        var coin = hero.findNearestItem();
        hero.moveXY(coin.pos.x, coin.pos.y);
    }
    // 在while循环后,于白色X处建造一个"decoy"。
    hero.buildXY("decoy", 72, 68);
    // 使用while 循环,当你的health等于maxHealth, 使用 `say` 来挑衅食人魔.
    while (hero.health == hero.maxHealth) {
        hero.say('还在愣着干什么,快点打我啊!');
    }
    // 然后退回到红色X处。
    hero.moveXY(22, 16);

    第8关:菠菜粉

    //  收集7份菠菜药水。
    // 然后你会强大到足以击败食人魔。
    var potionCount = 0;
    // 在while循环中编写药水收集代码
    // 检查药水的数量potionCount
    while (true) {
        var item = hero.findNearestItem();
        if (item) {
            hero.moveXY(item.pos.x, item.pos.y);
            potionCount += 1;
        }
        if (potionCount == 7) {
            break;
        }
    }
    // 当while循环结束时,
    // 去战斗吧!
    while (true) {
        var enemy = hero.findNearestEnemy();
        if (enemy) {
            hero.attack(enemy);
        }
    }

    第9关:团队合作

    // 宝石很快就会消失。 你需要帮助!
    // findItems()返回一个项目数组。
    var items = hero.findItems();
    // 从阵列中获取第一颗宝石。
    // 不要忘记第一个索引是0。
    var gem0 = items[0];
    // # 告诉 Bruno 拿到 gem0
    hero.say("Bruno " + gem0);
    // 您可以引用没有变量的宝石。
    hero.say("Matilda " + items[1]);
    // 为最后一个宝石创建一个变量[2]:
    hero.say("Lisa" + items[2]);
    // 使用moveXY()移至该宝石的位置
    hero.moveXY(items[2].pos.x, items[2].pos.y);

    第10关:协助防御

    // 保护农民免受食人魔的侵害。
    while (true) {
        // 得到一个敌人的数组。
        var enemies = hero.findEnemies();
        // 如果数组不为空。
        if (enemies.length > 0) {
            // 从 "enemies"数组中攻击第一个敌人。
            hero.attack(enemies[0]);
            // 返回到起始位置。 
            hero.moveXY(40, 20);
        }
    }

    第11关:招募队伍

    // 一个接一个呼叫农民。
    // 中立单位被检测为敌人。
    var neutrals = hero.findEnemies();
    while (true) {
        if (neutrals.length) {
            // 说出say 中立数组中的第一个元素
            hero.say(neutrals[0]);
        } else {
            hero.say("没有人在这儿");
        }
        // 使用findEnemies()重新更新中立数组
        var neutrals = hero.findEnemies();
    }

    第12关:第二宝石

    // 一颗宝石是安全的,另一颗是炸弹。
    // 但你知道答案:总是选择第二个。
    while (true) {
        var items = hero.findItems();
        // 如果物品数组元素个数大于或等于2:
        if (items.length >= 2) {
            // 移动到物品数组中的第二项
            hero.moveXY(items[1].pos.x, items[1].pos.y);
        }    // 否则:
        else {
            // 移动到中心标记。
            hero.moveXY(40, 34);
        }
    }

    第13关:Sarven救世主

    // 一个数组(Array)就是物品的数列。
    // 这个数组是一个朋友名字的数列。
    var friendNames = [
        'Joan',
        'Ronan',
        'Nikita',
        'Augustus'
    ];
    // 数组从零开始计数,不是1!
    var friendIndex = 0;
    // 循环该数组中的每一个名字
    // 使用.lenght 属性来得到数组的长度。
    while (friendIndex < friendNames.length) {
        // 使用方括号来获得数组中的名字。
        var friendName = friendNames[friendIndex];
        // 告诉你的朋友回家。
        // 使用+来连接两个字符串。
        hero.say(friendName + ', go home!');
        // 增加索引来获取数组中的下一个名字
        friendIndex += 1;
    }
    // 回到绿洲,在X处建造“fence”
    hero.moveXY(15, 30);
    hero.buildXY("fence", 30, 30);

    第14关:银行突袭

    // 等待食人魔,击败他们并收集黄金。
    while (true) {
        var enemies = hero.findEnemies();
        // enemyIndex 用于迭代数组。
        var enemyIndex = 0;
        // 虽然enemyIndex小于enemies.length
        while (enemyIndex < enemies.length) {
            // 在enemyIndex攻击敌人
            var enemy = enemies[enemyIndex];
            hero.attack(enemy);
            // 给 enemyIndex 加上 1。
            enemyIndex++;
        }
        var coins = hero.findItems();
        // coinIndex用于迭代硬币数组。
        var coinIndex = 0;
        while (coinIndex < coins.length) {
            // 用 coinIndex 从 coins 数组得到一个金币。
            var coin = coins[coinIndex];
            // 收集那个金币。
            hero.moveXY(coin.pos.x, coin.pos.y);
            // 给 coinIndex 的值增加 1。
            coinIndex++;
        }
    }

    第15关:游魂

    // 攻击骷髅捡走宝石
    while (true) {
        var enemies = hero.findEnemies();
        var enemyIndex = 0;
        while (enemyIndex < enemies.length) {
            var enemy = enemies[enemyIndex];
            // 敌人有血量时进攻。
            while (enemy.health > 0) {
                hero.attack(enemy);
            }
            enemyIndex += 1;
        }
        var items = hero.findItems();
        var itemIndex = 0;
        // 遍历所有的物品。
        while (itemIndex < items.length) {
            var item = items[itemIndex];
            // 而物品距离大于2:
            while (hero.distanceTo(item) > 2) {
                // 试着拿到物品
                hero.moveXY(item.pos.x, item.pos.y);
                // 别忘了让itemIndex变大 (itemIndex+=1)或(itemIndex=itemIndex+1)
                itemIndex += 1;
            }
        }
    }
  • 相关阅读:
    java的几种对象(PO,VO,DAO,BO,POJO)
    建立标准编码规则(四)-C#编码规范分类及实现
    建立标准编码规则(三)-CodeFixProvider 给代码分析器增加修复建议
    建立标准编码规则(二)-DiagnosticAnalyzer 增加诊断分析代码
    建立标准编码规则(一)-自定义C#代码分析器
    领域模型与微服务
    asp.net core 中使用StyleCop.StyleCopAnalyzers
    asp.net core中使用HttpClient实现Post和Get的同步异步方法
    asp.net core 如何集成kindeditor并实现图片上传功能
    一名前端Web架构师的成长之路(转载)
  • 原文地址:https://www.cnblogs.com/shihaiying/p/11706755.html
Copyright © 2020-2023  润新知