codecombat安息之云山峰11-21关及沙漠38关代码分享

codecombat中国游戏网址:
http://www.codecombat.cn/

所有代码为javascript代码分享

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

11、零和

// 在两分钟内击败敌方英雄。

loop {

var enemies = this.findEnemies();

var nearestEnemy = this.findNearest(enemies);

var item = this.findNearest(this.findItems());

// 你的英雄能收集金币,召唤部队。

if (this.isReady("goldstorm")) {

this.cast("goldstorm");

}

if (this.gold > this.costOf("soldier")) {

this.summon("soldier");

}

// 在站场上,她也可以命令你的盟友。

var friends = this.findFriends();

for (var friendIndex = 0; friendIndex < friends.length; ++friendIndex) {

var friend = friends[friendIndex];

this.command(friend, "attack", friend.findNearest(enemies));

}

// 使用你的英雄的能力力挽狂澜。

if (nearestEnemy && this.distanceTo(nearestEnemy) < 10) {

if (this.isReady("mana-blast")) {

this.manaBlast();

}

if (this.isReady("reset-cooldown")) {

this.resetCooldown("mana-blast") ;

}

this.attack(nearestEnemy);

}

else {

this.move(item.pos);

}

}

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

12、动物园管理员

// 保护笼子。

// 放一个士兵在每一个 X 的位置

var points = [];

points[0] = {x: 33, y: 42};

points[1] = {x: 47, y: 42};

points[2] = {x: 33, y: 26};

points[3] = {x: 47, y: 26};

// 1.收集80金币。

loop {

var item = this.findNearest(this.findItems());

this.move(item.pos);

if (this.gold > 80) {

break ;

}

}

// 2.建造4个士兵。

for(var i=0; i < 4; i++) {

this.summon("soldier");

}

// 3.派你的士兵到特定的位置上。

loop {

var friends = this.findFriends();

for(var j=0; j < friends.length; j++) {

var point = points[j];

var friend = friends[j];

var enemy = friend.findNearestEnemy();

if(enemy && enemy.team == "ogres" && friend.distanceTo(enemy) < 5) {

// 命令友方攻击。

this.command(friend, "attack", enemy);

} else {

// 命令的朋友移动到特定点上。

this.command(friend, "move", point);

}

}

}

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

13、木材的叛徒

//换个好法杖

loop {

// 收集金子

if (this.canCast("summon-fangrider")) {

this.cast("summon-fangrider");

}

var item = this.findNearest(this.findItems());

if (item) {

this.move(item.pos);

}

// 如果你有足够的金币,召唤一个士兵。

if (this.gold > this.costOf("soldier")) {

this.summon("soldier");

}

// 使用 for 循环来命令每个士兵。

var friends = this.findFriends();

for(var friendIndex = 0; friendIndex < friends.length; friendIndex++) {

var friend = friends[friendIndex];

if(friend.type == "soldier") {

var enemy = friend.findNearestEnemy();

// 如果这有一个敌人,命令她攻击。

if (enemy && friend.health >= friend.maxHealth/2 && friend.team != "ogres"){

this.command(friend, "attack", enemy);

}

else {

if (friend.team != "ogres") {

this.command(friend, "move", {x:71,y:48});

}

}

// Careful! If your soldiers die, a warlock will appear!

// 否则的话,移动她到地图的右边。

if (friend.health < friend.maxHealth/2) {

this.command(friend, "move", {x:61, y:48});

}

}

if (this.canCast("regen")) {

this.cast("regen", friend);

}

}

}

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

14、崇高牺牲

// 收集80金币

loop {

var item = this.findNearest(this.findItems());

if (item) {

this.move(item.pos);

}

if (this.gold > 80) {

break ;

}

}

// 建造4个士兵用来做诱饵

for (var i = 0; i < 4; i++) {

this.summon("soldier");

}

// 派你的士兵到指定位置。

var points = [];

points[0] = { x: 13, y: 73 };

points[1] = { x: 51, y: 73 };

points[2] = { x: 51, y: 53 };

points[3] = { x: 90, y: 52 };

var friends = this.findFriends();

// 使用 for 循环来在0~4个士兵中循环

// 让伙伴们比赛到指定的点上,命令他们移动

for (var index = 0; index < friends.length; index ++) {

var f = friends[index];

this.command(f, "move", points[index]);

}

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

15、狩猎派对

// 命令你的部队向东移动,攻击任何看到的食人魔。

// 使用 for 循环和 findFriends方法。

// 你能在你的士兵上使用findNearestEnemy()来获取他们的而不是你的最近的敌人。

loop {

var friends = this.findFriends();

for (var index = 0 ; index < friends.length ; index ++ ) {

var friend = friends[index] ;

var enemy = friend.findNearestEnemy();

if (enemy && friend.health > friend.maxHealth / 2) {

this.command(friend, "attack", enemy);

}

else if (friend.health <= friend.maxHealth / 2) {

this.command(friend, "move", {x:friend.pos.x - 1, y:friend.pos.y});

}

else {

this.command(friend, "move", {x:friend.pos.x + 1, y:friend.pos.y});

}

}

}

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

16、借刀

// 你的英雄不需要在本关参与战斗。

// 命令你的弓箭手集中在火攻敌人。

loop {

var enemy = this.findNearest(this.findEnemies());

var friends = this.findFriends();

for(var index = 0; index < friends.length; index ++ ){

var f = friends[index];

if (enemy && this.now() > 5) {

this.command(f, "attack", enemy);

}

else {

this.command(f, "move", f.pos);

}

}

}

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

17、重要的权利

// 这关会教你怎么定义你自己的函数。

// 放在函数内的代码并不会立刻执行, 而是先保存好, 以备后用.

// 这个函数会让你的英雄收集最近的金币。

this.pickUpNearestCoin = function() {

var items = this.findItems();

var nearestCoin = this.findNearest(items);

if(nearestCoin) {

this.move(nearestCoin.pos);

}

};

// 这个函数会让你的英雄召唤一个士兵。

this.summonSoldier = function() {

// 在这里写下代码:当你有足够金币时召唤士兵

if (this.gold > this.costOf("soldier")) {

this.summon("soldier");

}

};

// 这个函数会命令你的士兵攻击最近的敌人

this.commandSoldiers = function() {

var friends = this.findFriends();

for(var i=0; i < friends.length; i++) {

var enemy = friends[i].findNearestEnemy();

if(enemy) {

this.command(friends[i],"attack", enemy);

}

}

};

loop {

// 在你的循环里,你可以"调用"你在上面定义的函数

// 下面几行代码会让 "pickUpNearestCoin" 函数里的代码被执行。

this.pickUpNearestCoin();

// 在这里调用 summonSoldier

// 在这里调用 commandSoldiers

this.summonSoldier();

this.commandSoldiers();

}

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

18、保护和服务

// Protect the workers and animals!

// Defend these two positions:

var defend = [];

defend[0] = { x: 98, y: 28 };

defend[1] = { x: 84, y: 7 };

var soldiers = [];

var friends = this.findFriends();

for(var i=0; i < friends.length; i++) {

var friend = friends[i];

if(friend.type == "soldier") {

soldiers.push(friend);

} else {

// Defend the workers:

defend.push(friend);

}

}

loop {

// Use a for-loop to assign each soldier to a corresponding defend[] target

// Use command(soldier, "defend", thang) or command(soldier, "defend", position)

for(var y = 0; y < soldiers.length; y ++) {

var f = soldiers[y];

this.command(f, "defend", defend[y]);

}

}

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

19、The Bane of Soldiers

// Robobombs explode when they die or touch an enemy.

// Split up your soldiers so that they don‘t all get exploded together.

loop {

var friends = this.findFriends();

for(var index = 0; index < friends.length; index++) {

var friend = friends[index];

// Use the index to decide where to command each soldier to move.

if (friend && index == "0") {

this.command(friend, "move", {x:58,y:46});

}

else {

this.command(friend, "move", {x:friend.pos.x-1,y:friend.pos.y});

}

}

}

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

20、Ring Bearer

// You must escort a powerful magical ring back to town to be studied.

// The goal is to escape, not fight. More ogres lurk in the surrounding mountains!

// Make a circle of soldiers around the peasant!

// We give you two functions to help with this:

// findSoldierOffset figures out the position a soldier should stand at in relation to the peasant.

// The first argument ‘soldiers‘ should be an array of your soldiers.

// The second argument ‘i‘ is the index of the soldier (in soldiers) you want to find the position for.

function findSoldierOffset(soldiers, i) {

var soldier = soldiers[i];

var angle = i * 360 / soldiers.length;

return radialToCartesian(5, angle);

}

// This function does the math to determine the offset a soldier should stand at.

function radialToCartesian(radius, degrees) {

var radians = Math.PI / 180 * degrees;

var xOffset = radius * Math.cos(radians);

var yOffset = radius * Math.sin(radians);

return {x: xOffset, y: yOffset};

}

var peasant = this.findByType("peasant")[0];

// Use findByType to get an array of your soldiers.

loop {

// Use a for-loop to iterate over your array of soldiers

var f = this.findFriends();

for(var index = 0; index < f.length; index ++){

var friend = f[index];

if (friend.type == "soldier") {

var offset = findSoldierOffset(f,index);

moveTo = {x: peasant.pos.x + offset.x,y:peasant.pos.y + offset.y};

this.command(friend, "move", moveTo);

}

}

// Find the offset for a soldier.

// Add the offset.x and offset.y to the peasant‘s pos.x and pos.y.

// Command the soldier to move to the new offset position.

// The hero should keep pace with the peasant!

this.move({x: this.pos.x + 0.2, y: this.pos.y});

}

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

21、双生花

// 如果花匠受伤了,双生花会缩小!

this.summonSoldiers = function() {

if (this.gold >= this.costOf("soldier")) {

this.summon("soldier");

}

};

// 定义函数:commandSoldiers

this.commandSoldiers = function() {

var friends = this.findFriends();

for(var index = 0; index < friends.length; index ++) {

var friend = friends[index];

var enemy = friend.findNearestEnemy();

if (enemy && friend.type == "soldier") {

this.command(friend, "attack", enemy);

}

}

};

// 定义函数:pickUpNearestCoin

this.pickUpNearsetCoin = function() {

var item = this.findNearest(this.findItems());

if (item) {

this.move(item.pos);

}

};

var peasant = this.findByType("peasant")[0];

loop {

this.summonSoldiers();

// this.commandSoldiers();

// this.pickUpNearestCoin();

this.commandSoldiers();

this.pickUpNearsetCoin();

}

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

番外篇:沙漠38关-Goalkeeper

//多试几次就有好运气啦

// Command the peasants to prevent the ogres from scoring.

// The fireball is type "ball".

var friends = this.findFriends();

var i = 0;var j = -1;

loop {

if (i%10 === 0) {

j = -j;

}

this.command(friends[1], "move", {x:17,y:friends[1].pos.y+j});

this.command(friends[0], "move", {x:17,y:friends[0].pos.y-j});

i++;

}

时间: 2024-10-15 13:26:53

codecombat安息之云山峰11-21关及沙漠38关代码分享的相关文章

codecombat安息之云山峰1-10关及森林47/48关代码分享

codecombat中国游戏网址: http://www.codecombat.cn/ 所有代码为javascript代码分享 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1.峭壁追逐 // 抓住 Pender Spellbane 去了解她的秘密. loop { // Pender是这里唯一的朋友,所以她总是在最近的位置. pender = this.findNearest(this.findFriends()); if (pender) { // moveXY()

codecombat安息之云山峰32-36关及森林49关代码分享

codecombat中国游戏网址: http://www.codecombat.cn/ 所有代码为javascript代码分享 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 32.Sowing Fire // Goal: build three rows of nine fire-traps. // Returns "retreat", "attack", "start-next-trap-column", or "bui

codecombat安息之云山峰37-40关及地牢42关代码分享

codecombat中国游戏网址: http://www.codecombat.cn/ 所有代码为javascript代码分享 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 37.Deadly Discs //要有足够的钱买新英雄,大约是4800左右 // If the ogre takes damage, she'll wake up and smash the peasant. // You've got these razor-discs you can throw(). M

codecombat安息之云山峰41关代码分享

codecombat中国游戏网址: http://www.codecombat.cn/ 所有代码为javascript代码分享 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 41.Summit's Gate //需要一个好的操作 // Fight your way into the Inner Sanctum of the ogre chieftain, and kill her. this.flags = function(){ var flagg = this.findFlag

codecombat安息之云山峰22-31关代码分享

codecombat中国游戏网址: http://www.codecombat.cn/ 所有代码为javascript代码分享 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 22.躁动的死亡 // 这个关卡应该是非常难的!你也许需要一个很棒的战略与或装置去完成它! // 找到然后杀死雪人,为了仪式去收集他的血液. // 你也许想收集雪人遗留下的金币,你需要他们去召唤一只军队. // 站在召唤石旁(红色X),开始召唤. // this.flags = function(){ var 

codecombat之边远地区的森林1-11关及地牢38关代码分享

codecombat中国游戏网址:http://www.codecombat.cn/ 全部代码为javascript代码分享 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1.Boom! and Bust // Use your buildXY hammer to build two "fire-trap"s near the gate. // They will detonate when you move back to a safe distance!

codecombat之边远地区的森林31-44关代码分享

codecombat中国游戏网址: http://www.codecombat.cn/ 所有代码为javascript代码分享 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 31.为援兵坚持住 // 食人魔正在爬悬崖 // 为集结民兵组织保护足够长时间的农民. loop { var flag = this.findFlag(); var enemy = this.findNearestEnemy(); if (flag) { // 捡旗子 this.pickUpFla

codecombat之边远地区的森林12-22关及地牢39关代码分享

codecombat中国游戏网址: http://www.codecombat.cn/ 所有代码为javascript代码分享 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 12.兽人营地 // 如果有敌人,则攻击之 // 如果没有敌人,则攻击财宝箱 loop { // 使用if/else语句 var enemy = this.findNearestEnemy(); if (enemy) { this.attack(enemy); } else { this.atta

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