Codecombat 游戲攻略(計算機科學三)2


第33關 邏輯之路

判斷secretB 非真,走上面;否則,走下面(這里面要先自己進行邏輯判斷)
if…else語句
或者這樣用(不用自己進行判斷)

// 如果 secretB 非真,走上面;否則,走下面。
var secretE = !secretB;
if (secretE) {
    hero.moveXY(44, 33);
} else {
    hero.moveXY(44, 15);
}
// 從巫師那得到兩個秘密的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 有一個為真,走上面;否則,走下面。
if (secretA || secretB) {
    hero.moveXY(32, 33);
} else {
    hero.moveXY(32, 15);
}
hero.moveXY(38, 24);
// 如果 secretB 非真,走上面;否則,走下面。
if (secretB) {
    hero.moveXY(44, 15);
} else {
    hero.moveXY(44, 33);
}
hero.moveXY(50, 24);

 

第三十四關 邏輯之圈

注意邏輯判斷

// 移動到巫師旁,獲得他的秘密值。
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);
}
// 如果三個值中的任何一個為真,則往左走。
// 否則,向右走。保存第五個值。
if (secretA || secretB || secretC) {
    hero.moveXY(20, 24);
} else {
    hero.moveXY(40, 24);
}
// 如果所有五個值都為真,則走上面。
// 否則,走下面。
if (secretA && secretB && secretC) {
    hero.moveXY(30, 33);
} else {
    hero.moveXY(30, 15);
}

 

 

第三十五關 邏輯結論

運算符優先級

或與非優先於and

// 移動到 '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"
hero.moveXY(26, 36);
if (secretA || secretB && secretC) {
    hero.say("true");
} else {
    hero.say("false");
}
// 如果A OR C為真,且如果B OR C為真,對'Istvan'說"TRUE"。否則說"FALSE"
hero.moveXY(37, 34);
if (secretA || secretC && secretB || secretC) {
    hero.say("true");
} else {
    hero.say("false");
}
// 如果A AND B為真,或者如果B為真且C為非真,對'Csilla'說"TRUE"。否則說"FALSE"
hero.moveXY(40, 22);
if (secretA && secretB || secretB && secretC) {
    hero.say("true");
} else {
    hero.say("false");
}

 

 

 

挑戰或與非

使用while循環
先檢查是否有enemy或是item,再進行判斷;

// 只在`type`是"potion"或"lightstone"的情況下收集物品。
// 如果敵人類型`type`不是"burl",且距離小於15米,則攻擊敵人。
while (true) {
    var item = hero.findNearestItem();
    if (item) {
        if (item.type == "potion" || item.type == "lightstone") {
            hero.moveXY(item.pos.x, item.pos.y);
        }
    }
    var enemy = hero.findNearestEnemy();
    var distance = hero.distanceTo(enemy);
    if (enemy) {
        if (enemy.type != "burl" && distance < 15) {
            hero.attack(enemy);
        }
    }
}

 

 

 

第三十六關 強壯的沙氂牛

為變量賦值
-= 賦值運算符

// 當氂牛靠近時,向右移動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。
        x += 10;
        // 使用moveXY(x, y)來移動!
        hero.moveXY(x, y);
    }
}

 

 

 

第三十七關 綠洲

-=賦值運算符

// 向右移動以到達綠洲,
// 向左移動以避免附近的氂牛。
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);
    }
}

 

 

 

第三十八關 SARVEN路

+= 賦值運算符

// 朝綠洲前進。小心新的敵人:食人魔偵察兵!
// 通過增加當前的x和y坐標值來向右上移動。
while (true) {
    // 如果有敵人,則攻擊。
    var enemy = hero.findNearestEnemy();
    if (enemy) {
        hero.attack(enemy);
    }    // 否則,繼續向右上移動。
    else {
        var x = hero.pos.x;
        var y = hero.pos.y;
        x += 10;
        y += 10;
        hero.moveXY(x, y);
    }
}

 

 

 

挑戰  干燥灌溉

// 沿斜線,向左移動6米,向上移動4米。
// 擊敗你發現的敵人,然后再次移動。
while (true) {
    var x = hero.pos.x;
    var y = hero.pos.y;
    var enemy = hero.findNearestEnemy();
    x -= 6;
    y += 4;
    hero.moveXY(x, y);
    if (enemy) {
        hero.attack(enemy);
    }
}

 

 

 

第三十九關 SARVEN間隙

賦值給變量也可以,直接寫也可以hero.pos.y;

// 每次向下移動10米,朝綠洲移動。
// 在每個食人魔左邊20米的位置建造圍欄。
while (true) {
    var enemy = hero.findNearestEnemy();
    if (enemy) {
        // 在敵人左邊20個單位處使用buildXY建造一段"fence"
        var x = enemy.pos.x;
        var y = enemy.pos.y;
        x -= 20;
        hero.buildXY("fence", x, y);
    } else {
        // 向下使用moveXY移動10米。
        var a = hero.pos.y;
        a -= 10;
        hero.moveXY(hero.pos.x, a);
    }
}

 

 

 

第四十關  十字路口

// 使用 "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);
}

 

 

 

第四十一關  截斷

// 站在農民和塔之間。
while (true) {
    var enemy = hero.findNearestEnemy();
    var friend = hero.findNearestFriend();
    // 通過將friend.pos.x和enemy.pos.x相加來計算x
    // 然后除以2。
    // 如需更多幫助,請查看指南!
    var aa = (enemy.pos.x + friend.pos.x) / 2;
    // 現在對y做同樣的事情
    var bb = (friend.pos.y + enemy.pos.y) / 2;
    // 移動到計算得到的X和Y坐標。
    hero.moveXY(aa, bb);
}

 

 

第四十二關 雷蹄

if/else語句

// 向右朝綠洲移動。
// 看到氂牛時,在上方或是下方建造一段"fence"
while (true) {
    var yak = hero.findNearestEnemy();
    if (yak) {
        // 如果yak.pos.y大於hero.pos.y
        if (yak.pos.y > hero.pos.y) {
            // 使用buildXY在氂牛下方10米處建造一段"fence"
            hero.buildXY("fence", yak.pos.x, yak.pos.y - 10);
        }    // 否則:
        else {
            // 使用buildXY在氂牛上方10米處建造一段"fence"
            hero.buildXY("fence", yak.pos.x, yak.pos.y + 10);
        }
    }
    // 使用moveXY向右朝綠洲移動10米。
    hero.moveXY(hero.pos.x + 10, hero.pos.y);
}

 

 

 

第四十三關  KITHGARD附魔師

函數聲明和調用

// 定義你自己的簡單移動函數。
// 定義moveRight
// 注意:每個函數都應該讓英雄移動12米!
function moveRight() {
    var x = hero.pos.x + 12;
    var y = hero.pos.y;
    hero.moveXY(x, y);
}
// 定義moveDown
function moveDown() {
    var a = hero.pos.x;
    var b = hero.pos.y - 12;
    hero.moveXY(a, b);
}
// 定義moveUp
function moveUp() {
    var c = hero.pos.x;
    var d = hero.pos.y + 12;
    hero.moveXY(c, d);
}
// 現在,使用這些函數!
moveRight();
moveDown();
moveUp();
moveUp();
moveRight();

 

 

 

第四十四關 掃雷

if…else if語句

// 帶領農民和醫生穿越雷區。
while (true) {
    var coin = hero.findNearestItem();
    var healingThreshold = hero.maxHealth / 2;
    // 檢查你是否身受重傷。
    if (hero.health < healingThreshold) {
        // 向左移動10米。
        hero.moveXY(hero.pos.x - 10, hero.pos.y);
        // 請求治療。
        hero.say("Can I get a heal?");    // 否則,移動到下一枚硬幣。
    } else if (coin) {
        hero.moveXY(coin.pos.x, coin.pos.y);
    }
}

 

 

 

第四十五關 KILLDEER操作

if條件語句調用函數做判斷

// 誘使食人魔陷入陷阱。 這些食人魔很謹慎。
// 只有英雄受傷時,他們才會追擊。
// 該函數檢查英雄的生命值
// 並返回一個布爾值。
function shouldRun() {
    if (hero.health < hero.maxHealth / 2) {
        return true;
    } else {
        return false;
    }
}
while (true) {
    // 只有當shouldRun()返回True時才移動到X.  true
    if (shouldRun()) {
        hero.moveXY(75, 37);
    }    // 否則,攻擊!
    else {
        var enemy = hero.findNearestEnemy();
        hero.attack(enemy);
    }
}

 

 

 

第46關 醫療護理

if…else if語句

// 當你的生命值少於一半時,請求治療師的幫助。

while(true) {
    var currentHealth = hero.health;
    var healingThreshold = hero.maxHealth / 2;
    // 如果你當前的生命值低於界限值,
    // 轉移到治療點並說, "heal me".
    // 否則的話,攻擊。你需要奮戰!
    if(currentHealth < healingThreshold) {
        hero.moveXY(65, 46);
        hero.say("heal me");
        }else if(enemy){
            var enemy = hero.findNearestEnemy();
            hero.attack(enemy);}
}

 

 

 

第47 守時

這關非常奇怪,我覺得已經運行成功了可是一提交又說我錯了;
而且對的答案放在上面也是不對,費解
if…else if … else語句

// 使用你的新技能來選擇你要做什么: hero.time
while (true) {
    // 如果是前十秒,攻擊。
    if (hero.time < 10) {
        var aa = hero.findNearestEnemy();
        if (aa) {
            hero.attack(aa);
        }
    }    // 否則,如果是前35秒,收集硬幣。
    else if (hero.time < 35) {
        var coin = hero.findNearestItem();
        if (coin) {
            hero.moveXY(coin.pos.x, coin.pos.y);
        }
    }    // 35秒后,再次發起攻擊!
    else {
        var bb = hero.findNearestEnemy();
        if (bb) {
            hero.attack(bb);
            if (hero.health < hero.maxHealth / 2) {
                hero.moveXY(16, 12);
            }
        }
    }
}

 

 

 

第四十八關 沙漠十字

if…else語句
邏輯運算符

// 弄清食人魔來自哪個方向。
while (true) {
    var enemy = hero.findNearestEnemy();
    if (enemy) {
        // 左邊:enemy.pos.x小於hero.pos.x
        var isLeft = hero.pos.x > enemy.pos.x;
        // 上方:enemy.pos.y大於hero.pos.y
        var isAbove = hero.pos.y < enemy.pos.y;
        // 右邊:enemy.pos.x大於hero.pos.x
        var isRight = hero.pos.x < enemy.pos.x;
        // 下方:enemy.pos.y小於hero.pos.y
        var isBelow = hero.pos.y > enemy.pos.y;
        // 如果敵人在上方 (isAbove) 且 在左邊 (isLeft):
        // 使用buildXY()在X標記處建造一個"fire-trap"。
        if (isLeft && isAbove) {
            hero.buildXY("fire-trap", 20, 51);
        }
        // 如果敵人在上方 (isAbove) 且 在右邊 (isRight):
        // 使用buildXY()在X標記處建造一個"fire-trap"。
        if (isAbove && isRight) {
            hero.buildXY("fire-trap", 60, 51);
        }
        // 如果敵人在下方 (isBelow) 且 在左邊 (isLeft):
        // 使用buildXY()在X標記處建造一個"fire-trap"。
        if (isBelow && isLeft) {
            hero.buildXY("fire-trap", 20, 17);
        }
        // 如果敵人在下方 (isBelow) 且 在右邊 (isRight):
        // 使用buildXY()在X標記處建造一個"fire-trap"。
        if (isBelow && isRight) {
            hero.buildXY("fire-trap", 60, 17);
        }
        hero.moveXY(40, 34);
    } else {
        hero.moveXY(40, 34);
    }
}

 

 

 

第四十九關 囤積黃金

break語句

// 收集25金,然后告訴 Naria 總數。
// 當totalGold >= 25,使用 break 來停止收集。
var totalGold = 0;
while (true) {
    var coin = hero.findNearestItem();
    if (coin) {
        // 撿起硬幣。
        hero.moveXY(coin.pos.x, coin.pos.y);
        // 將硬幣的價值加到totalGold。
        // 使用以下方法得到它的價值::  coin.value
        totalGold += coin.value;
    }
    if (totalGold >= 25) {
        // 這會中斷跳出循環並執行循環下面的語句。
        // 循環結束后,運行循環后的代碼。
        break;
    }
}
// 完成收集黃金!
hero.moveXY(58, 33);
// 去告訴 Naria 你收集了多少黃金。
hero.say(totalGold);

 

 

 

第五十關 誘餌演習

>= 運算符

// 我們在測試一個新的建造類型:誘餌(decoy)。
// 建造4個誘餌,然后匯報總數給Naria。
var decoysBuilt = 0;
while (true) {
    var coin = hero.findNearestItem();
    if (coin) {
        // 收集硬幣!
        hero.moveXY(coin.pos.x, coin.pos.y);
    }
    // 每個誘餌消費25金。
    // 如果hero.gold大於或等於25:
    if (hero.gold >= 25) {
        // 用buildXY建造一個"decoy"
        hero.buildXY("decoy", hero.pos.x, hero.pos.y);
        // 為decoysBuilt計數值加1。
        // decoysBuilt = decoysBuilt + 1;
        decoysBuilt += 1;
    }
    if (decoysBuilt == 4) {
        // 建造了4個誘餌后跳出循環。
        break;
    }
}
hero.say("完成誘餌建造!");
hero.moveXY(14, 36);
// 說出你建造了多少誘餌。
hero.say(decoysBuilt);

 

 

 

第五十一關 煉金術傳承

continue語句;會回到循環的開頭

// 和食人魔矮人搶Omarn Brewstone提取出的水!
// 使用`continue`語句避開毒葯。
while (true) {
    var enemy = hero.findNearestEnemy();
    var item = hero.findNearestItem();
    // 如果沒有敵人,使用continue跳出此輪循環繼續運行。
    if (!enemy) {
        continue;
    }
    // 如果沒有物品,要一瓶葯水,然后continue。
    if (!item) {
        hero.say("給我點喝的!");
        continue;
    }
    // 如果item.type是"poison",使用continue跳出此輪循環繼續運行。
    if (item.type == "poison") {
        // 此時,葯水一定是一瓶水
        // 使用moveXY移到葯水,然后回到起點!
        continue;
    }
    hero.moveXY(item.pos.x, item.pos.y);
    hero.moveXY(34, 47);
}

 

 

 

第五十二關 快速賽跑

事件處理器使用函數
代碼原本應該是從上到下依次運行的;這樣就可以改變原來的順序,同步運行

// 使用事件處理器,這樣寵物和英雄都會跑起來!
function petMove() {
    pet.moveXY(50, 21);
}
// 使用pet.on("spawn", petMove)替換petMove()
// 這樣你的英雄和寵物就會同時跑起來。
// ΔpetMove()把這個用pet.on("spawn", petMove)替換
pet.on("spawn", petMove);
hero.moveXY(50, 12);

 

 

 

第五十三關 沙漠蘑菇

事件選擇器處理函數
代碼原本應該是從上到下依次運行的;這樣就可以改變原來的順序,同步運行

// 收集9個蘑菇。
// 這個函數讓寵物給你取回葯水。
function onSpawn(event) {
    while (true) {
        // 寵物可以根據類型找到最近的物品。
        var potion = pet.findNearestByType("potion");
        // 如果存在葯水則讓寵物取回:
        if (potion) {
            pet.fetch(potion);
        }
    }
}
pet.on("spawn", onSpawn);
// 蘑菇有毒,不要太快收集。
while (true) {
    var someItem = hero.findNearestItem();
    if (someItem && hero.health > hero.maxHealth / 3) {
        // 收集someItem:
        hero.moveXY(someItem.pos.x, someItem.pos.y);
    }
}

 

 

 

第五十四關 蘑菇之聲

事件選擇器處理函數
if…else語句
while循環循環調用函數

// 打敗骷髏並打開寶箱。
function onSpawn(event) {
    // 寵物要找到生命葯水(類型是 "potion"):
    var potion = pet.findNearestByType("potion");
    // 並將它取回:
    if (potion) {
        pet.fetch(potion);
    }
    // 寵物要找到金鑰匙(類型是"gold-key"):
    var key = pet.findNearestByType("gold-key");
    // 並將它取回:
    if (key) {
        pet.fetch(key);
    }
}
// 寵物可以發現的不僅僅是物品:
var skeleton = pet.findNearestByType("skeleton");
pet.on("spawn", onSpawn);
while (true) {
    if (skeleton.health > 0) {
        hero.attack(skeleton);
    } else {
        hero.moveXY(31, 38);
    }
}

 

 

 

第五十五關 鑰匙陷阱

運算符優先級
if…else語句
while循環循環調用函數
事件選擇器處理函數

// 獲得三把鑰匙並釋放聖騎士。

function onSpawn(event) {
    // 寵物需要找到並拿回3把鑰匙。
    // 你需要后續類型的物品:
    // "bronze-key"、"silver-key"和"gold-key"。
    var bronze = pet.findNearestByType("bronze-key");
    var silver = pet.findNearestByType("silver-key");
    var gold = pet.findNearestByType("gold-key");
    pet.fetch(bronze);
    pet.fetch(silver);
    pet.fetch(gold);
}

pet.on("spawn", onSpawn);

while(true) {
    var enemy = hero.findNearestEnemy();
    if (enemy && enemy.team == "ogres") {
        hero.attack(enemy);
    }
    if (hero.health < 300) {
        // 你也可以在主線程中使用寵物。
        var potion = pet.findNearestByType("potion");
        if (potion) {
            hero.moveXY(potion.pos.x, potion.pos.y);
        }
    }
}

 

 

 

第五十六關 命令鏈

這一關如果你確定你的邏輯正確的話,那么肯定就是移動的點出了問題,
不要完全的相信題目給出的提示。如果設置在33,33 的話,英雄就會看到旁邊的人正在燒湯,
就會被吸引過去
站在村外,離爆炸點太近也會被炸死適當的調整一下位置適合很有必要的。
if…else語句
while循環循環調用函數
事件選擇器處理函數

// 只有你的寵物可以喚醒巫師。
function onHear(event) {
    // "hear"事件設置event.speaker屬性。
    // 檢查寵物是否聽到了英雄的話:
    if (event.speaker == hero) {
        pet.say("WOOF");
    }
}
// 為"hear"事件指派事件處理器。
pet.on("hear", onHear);
while (true) {
    var enemy = hero.findNearestEnemy();
    // 如果有敵人:
    if (enemy) {
        // 使用hero.say()提醒你的寵物
        hero.say("enemy");
        // 移動到營地內的X處。
        hero.moveXY(30, 25);
        // 然后返回營地外的X處。
        hero.moveXY(30, 17);
    }
}

 

 

 

第五十七關 寵物工程師

if…else語句
while循環循環調用函數
事件選擇器參數

// 根據需要將寵物移到左或右按鈕。
function onHear(event) {
    // 找到門衛
    var archer = pet.findNearestByType("archer");
    var soldier = pet.findNearestByType("soldier");
    // 如果"event.speaker"參數是 `archer`:
    if (event.speaker == archer) {
        // 移動到左邊的按鈕。
        pet.moveXY(32, 30);
    }
    // 如果"event.speaker"參數是`soldier`:
    if (event.speaker == soldier) {
        // 移動到右邊的按鈕。
        pet.moveXY(48, 30);
    }
}
pet.on("hear", onHear);
// 您不必更改下面的代碼。
// 你的英雄應該保護右下角的通道。
while (true) {
    var enemy = hero.findNearestEnemy();
    if (enemy) {
        hero.attack(enemy);
    }
}

 

 

 

第五十八關 寵物翻譯家

if…else語句
while循環循環if條件
事件選擇器參數

// 你的寵物應該翻譯命令。
 
function onHear(event) {
    // 寵物聽到的消息在event.message中
    var message = event.message;
    // 如果消息是 "North":
    if (message == "North") {
        // 寵物說 "Htron"。
        pet.say("Htron");
    }
    // 如果消息是 "South":
    if (message == "South") {
        // 寵物說 "Htuos"。
        pet.say("Htuos");
    }
    // 如果消息是 "East":
    if(message == "East"){
        // 寵物說 "Tsae"。
    pet.say("Tsae");}
}

// 分配事件處理程序。
pet.on("hear", onHear);

while (true) {
    var enemy = hero.findNearestEnemy();
    // 不要攻擊Brawlers。
    if (enemy && enemy.type != "brawler") {
        hero.attack(enemy);
    }
}

 

 

 

第六十關 煉金術傳承

事件處理參數

// 等着煉金師的命令去拿葯水。

// 寵物事件的事件處理程序 "hear"。
function onHear(event) {
    // 找到最近的葯水。
    var potion = pet.findNearestByType("potion");
    var message = event.message;
    // 如果事件的消息是 "Fetch"
    if(message == "Fetch"){
        // 讓寵物拿取葯水。
    pet.fetch(potion);}
    // 其他(對於任何其他消息):
    else{
        // 用pet.moveXY 讓寵物回到紅色標記。
        pet.moveXY(54,34);
}}

pet.on("hear", onHear);

// 您不必更改下面的代碼。
while(true) {
    var enemy = hero.findNearest(hero.findEnemies());
    if (enemy) {
        hero.attack(enemy);
    }
    else {
        hero.moveXY(40, 34);
    }
}

 

 

 

第六十一關 危險鑰匙

事件(發生的事情)
使用on( 事件 ,函數)方法將函數注冊為事件處理函數
事件處理函數會在指定類型的事件發生時運行

// 聽聖騎士的,取回正確的鑰匙。
function onHear(event) {
    // 寵物可以找到聖騎士和鑰匙。
    var paladinUnit = pet.findNearestByType("paladin");
    var goldKey = pet.findNearestByType("gold-key");
    var silverKey = pet.findNearestByType("silver-key");
    var bronzeKey = pet.findNearestByType("bronze-key");
    // 如果event.speaker是paladinUnit:
    if (event.speaker == paladinUnit) {
        // 如果event.message是"Gold":
        if (event.message == "Gild") {
            // 寵物需要取金鑰匙。
            pet.fetch(goldKey);
        }
        // 如果event.message是 "Silver":
        if (event.message == "Silver") {
            // 寵物需要取銀鑰匙。
            pet.fetch(silverKey);
        }
        // 如果event.message是"Bronze":
        if (event.message == "Bronze") {
            // 寵物需要取青銅鑰匙。
            pet.fetch(bronzeKey);
        }
    }
}
pet.on("hear", onHear);

 

 

 

第六十二關 奧林匹克比賽

事件(發生的事情)
使用on( 事件 ,函數)方法將函數注冊為事件處理函數
事件處理函數會在指定類型的事件發生時運行
event.message
event.speaker

// 寵物必須贏得比賽。
// 運動員需要觸碰隊伍標記,然后往回跑。
function onHear(event) {
    var referee = pet.findNearestByType("wizard");
    // 如果說話的人是裁判員referee並且說的是"Start":
    if (event.speaker == referee) {
        if (event.message == "Start") {
            // 讓寵物跑到紅色標記。
            pet.moveXY(54, 27);
        }
        // 然后跑回來。
        pet.moveXY(6, 27);
    }
}
// 指派onHear函數來處理"hear"事件。
pet.on("hear", onHear);

 

 

 

第六十三關  十字骨架

// 歡迎來到十字骨頭關卡!
// 攢硬幣來招募規模合適的軍隊。
// 移動到X標記來招募部隊。
// 花費30金招募2名偵察兵。
// 花費20金召喚2名投矛手。
// 如果英雄有超過一定數量的黃金,就做點什么吧!
// 撿起葯水來治療守護者和你自己。
// 注意指示特定事件的旗標可能出現。
while (true) {
    if (hero.gold >= 45) {
        // 如果英雄有超過一定數量的黃金,就做點什么吧!
        hero.moveXY(58, 20);
        hero.moveXY(58, 16);
    } else {
        var item = hero.findNearestItem();
        // 收集硬幣招募單位!
        hero.moveXY(item.pos.x, item.pos.y);
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM