codecombat之Sarven沙漠13-24关及森林45/46关代码分享

codecombat中国游戏网址: http://www.codecombat.cn/
所有代码为javascript代码分享

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

13、诱饵钻

// 我们在测试一个新的战斗单位:诱饵。
// 创建4个诱饵,然后汇报给 Naria
var decoysBuilt = 0;
loop {
    var item = this.findNearest(this.findItems());
    // 掠夺金币!
    var x = item.pos.x ;
    var y = item.pos.y ;
    this.moveXY(x, y);
    // 每个诱饵消费25个金币,使用石英灵石。
    // 让它知道当你有超过25个金币的时候 this.gold.
    if (this.gold > 25) {
        this.buildXY("decoy", x, y);
        decoysBuilt ++ ;
    }
    // 当你一直走的时候,保持统计你创建的诱饵的数量。
    if (decoysBuilt == 4) {
        break;
    }
    // 当你创建了4个诱饵时跳出循环
    
}
this.moveXY(14, 36);
this.say("完成创建诱饵!");
// 去找 Naria 并告诉她你创建了多少个诱饵。
this.say("4");

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

14、牦牛牵引

// 保护 brandy 避免那些冲来的口渴的耗牛!
// 收集金币来建造诱饵干扰耗牛。
// 使用旗子来决定什么时候在哪里建造诱饵。
loop {
    var flag = this.findFlag();
    var item = this.findNearest(this.findItems());
    if (flag) {
        if (this.gold >= 25) {
            var x = flag.pos.x ;
            var y = flag.pos.y ;
            this.buildXY("decoy", x, y);
        }
        this.pickUpFlag(flag);
    }
    if (item) {
        var goldx = item.pos.x ;
        var goldy = item.pos.y ;
        this.moveXY(goldx, goldy);
    }
    
}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

15、沙漠战役

// while循环重复直到条件为假。
// 在while 循环内部执行动作,否认则它永远不能执行。
var ordersGiven = 0;
while (ordersGiven < 5) {
    // 在站场上移动和排列你的盟友。 (如果你是直接在他们面前,他们只能听到你的。
    var x = this.pos.x;
    var y = this.pos.y - 9;
    this.moveXY(x, y);
    this.say("Attack!");
    ordersGiven ++ ;
}
// 当你找到规律,加入攻击。
loop {
    var enemy = this.findNearest(this.findEnemies());
    if (enemy) {
         if (this.isReady("bash")) {
            this.bash(enemy);
        }
        else {
            this.attack(enemy);
        }       
    }

}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

16、尘埃

// 总是采取行动在一个while循环,否则会无限!
// 使用循环直到你有足够的击杀10个芒奇金人 
var hits = 0;
this.moveXY(58, 30);
while (hits < 10) {
    var enemy = this.findNearest(this.findEnemies());
    if (enemy) {
        this.attack(enemy);
        hits ++ ;
    }
}
// 当你完成后,撤退到伏击点。
this.moveXY(79, 33);

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

17、Sarven 拯救

// 从强盗中救出农民并送她回到村。
// 选择适合你的路线,避开巡逻或直面迎接他们。
// 药水会有随机效果–有好的,也有不好的。
// 觉得自己很勇敢?如果你可以得到食人魔的财宝的话,就会得到奖励。
loop {
    var flag = this.findFlag();
    var enemy = this.findNearest(this.findEnemies());
    if (flag) {
        this.pickUpFlag(flag);
    }
    if (enemy) {
        if (this.isReady("bash")) {
            this.bash(enemy);
        }
        if (this.isReady("cleave")) {
            this.cleave(enemy);
        }
        else {
            this.attack(enemy);
        }
    }
}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

18、神圣的雕像
同17关Sarven 拯救代码

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

19、蜃景制造者

// 当你的金币小于25个的时候,收集金币。
// 然后建造诱饵来引诱食人魔离开路线。
// 当你的生命值满了,冲着小食人魔喊叫侮辱他们,引诱他们。
// 然后退回到你的基地伏击他们。
    while (this.gold < 25) {
        var mygold = this.findNearest(this.findItems()).pos;
        var x = mygold.x ;
        var y = mygold.y ;
        this.moveXY(x, y);
    }
    this.buildXY("decoy", 72, 69);
loop {
    var flag = this.findFlag();
    if (flag) {
        this.pickUpFlag(flag);
    }
    if (this.health == this.maxHealth) {
        this.say("Come on baby !");
    }
}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

20、Sarven 救世主

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

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

21、奇数沙尘暴

// 这个数组包含朋友和食人魔。
// 偶数元素是食人魔,奇数元素是伙伴。
var everybody = ['Yetu', 'Tabitha', 'Rasha', 'Max', 'Yazul',  'Todd'];
var enemyIndex = 0;
while (enemyIndex < everybody.length) {
    // 使用方括号把食人魔的名字从数组中获取出来
    var enemyname = everybody[enemyIndex] ;
    // 使用变量传入食人魔的名字,攻击它们。
    this.attack(enemyname);
    // 每次递增2,来跳过朋友。
    enemyIndex += 2;
}
this.moveXY(36, 53);
// 在击败食人魔之后,向绿洲移动。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

22、潜伏

// 用findEnemies把敌人存在数组enemies中
// 只攻击萨满巫师,不要攻击牦牛!

var enemies = this.findEnemies();
var enemyIndex = 0;
// 把这段代码用一个while loop 功能循环遍历所有的敌人
while (enemyIndex < enemies.length) {
    var enemy = enemies[enemyIndex];
    if (enemy.type == 'shaman') {
        while (enemy.health > 0) {
            if (this.isReady("bash")) {
                this.bash(enemy);
            }
            this.attack(enemy);
        }
    }
    enemyIndex ++ ;
}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

23、优待

// 首先,在所有的敌人中循环...
var enemies = this.findEnemies();
var enemyIndex = 0;
// ...但是仅攻击 'thrower' 类型的敌人。
// 别忘了使用你的特殊能力!
while (enemyIndex < enemies.length) {
    if (enemies[enemyIndex].type == "thrower") {
        if (this.isReady("cleave")) {
            this.cleave(enemies[enemyIndex]);
        }
        else {
            this.attack(enemies[enemyIndex]);
        }
    }
    enemyIndex ++ ;
}
// 然后再到所有的敌人中循环...
enemies = this.findEnemies();
enemyIndex = 0;
// ...干掉仍然活着的每个
while (enemyIndex < enemies.length) {
    if (this.isReady("cleave")) {
        this.cleave(enemies[enemyIndex]);
    }
    else {
        this.attack(enemies[enemyIndex]);
    }
    enemyIndex ++ ;
}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

24、Sarven 牧羊人

// 使用 while 循环来对付食人魔。

loop {
    var enemies = this.findEnemies();
    var enemyIndex = 0;
    while (enemyIndex < enemies.length) {
        // 将攻击逻辑放到 while 循环里来攻击所有的敌人。
        // Find the array's length with: enemies.length
        var enemy = enemies[enemyIndex];
        // "!=" 意思是 "不等于"
        if (enemy.type != "sand-yak") {
            // 当敌人的健康值大于0,攻击它!
            if (enemy.health > 0) {
                if (this.isReady("cleave")) {
                    this.cleave(enemy);
                }
                else if (this.isReady("bash")) {
                    this.bash(enemy);
                }
                else {
                    this.attack(enemy);
                }
            }
        }
        enemyIndex ++ ;
    }
    // 在两波敌人之间,移动回中央。
    this.moveXY(40, 32);
}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

番外篇:森林45关-野马

loop {
    // 你怎么寻找最近的友好单位?
    // 马=?
    var horse = this.findNearest(this.findFriends());
    var flag = this.findFlag();
    if (horse ) {
        var x1 = horse.pos.x - 7;
        var x2 = horse.pos.x + 7;
        if (x1 >= 1) {
            // 移动到马的y坐标,但使用x1作为x坐标。
            this.moveXY(x1, horse.pos.y);
        } else if (x2 <= 79) {
            // 移动到马的y坐标,但使用x2作为x坐标。
            this.moveXY(x2, horse.pos.y);
        }
        var distance = this.distanceTo(horse);
        if (distance <= 10) {
            this.say("Whoa");
            // 移到到红色的x来使马返回农场。 
            // 移回牧场开始寻找下一匹马。
            if (flag) {
                this.pickUpFlag(flag);
            }
        }
    }
}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

番外篇:森林46关-天启

//使用增加速度的装备
// 炮火的天启在接近我们!
// 在60秒内躲避炮弹。
// 提示:旗子可能派上用场,比如Coinucopia这关。
// 因为攻击是每次提交时随机的,所以你不能使用moveXY这个指令。
loop {
    var flag = this.findFlag();
    if (flag) {
        this.pickUpFlag(flag);
this.shield();
    }
}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

你可能感兴趣的:(codecombat之Sarven沙漠13-24关及森林45/46关代码分享)