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

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

姜奇
2023-12-01

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

}

 类似资料: