当前位置: 首页 > 工具软件 > CodeCombat > 使用案例 >

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

袁卓
2023-12-01

第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;

}

}

}

原文:https://www.cnblogs.com/shihaiying/p/11706755.html

 类似资料: