強壯的沙犛牛
// 當犛牛靠近時向右移動10米來躲避
// 躲避4頭犛牛完成此關
while(true) {
// 獲取英雄當前位置的x和y坐標。
var x = hero.pos.x;
var y = hero.pos.y;
// 找到最近的耗牛。
var yak = hero.findNearestEnemy();
// 使用 "if" 來判斷在犛牛離你 10 公尺以內時,英雄才會移動
if (hero.distanceTo(yak) < 10) {
// 向右移動,在英雄位置的x坐標值基礎上加10。
hero.moveXY(x+10, y);
// 使用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 來向左移動。
hero.moveXY(x-10, y);
// 使用moveXY移動到新的x,y位置。
} else {
// 從你的 X 座標加上 10 來向右移動。
hero.moveXY(x+10, y);
// 使用moveXY移動到新的x,y位置。
}
}
盆地的踐踏
// 嗯哼,踐踏!用你的狡黠抵達綠洲。
while(true) {
var enemy = hero.findNearestEnemy();
var xPos = hero.pos.x + 5;
var yPos = 17;
if(enemy) {
// 你只要向上或向下移動1公尺就可以閃躲犛牛!
if(enemy.pos.y > hero.pos.y) {
// 如果犛牛在你上面,調整 yPos 往下跑!
hero.moveXY(xPos, yPos - 5);
} else if (enemy.pos.y < hero.pos.y) {
// 如果犛牛在你下面,調整 yPos 往上跑!
hero.moveXY(xPos, yPos + 5);
}
}
}
薩文路
// 到達綠洲。小心新的敵人:食人魔偵察兵!
// 對你目前的 X 及 Y 座標加 10 ,來向右上移動。
while(true) {
// 攻擊你看見的任何敵人
var enemy = hero.findNearestEnemy();
var xPos = hero.pos.x +10
var yPos = hero.pos.y +10
if (enemy) {
hero.attack(enemy);
}
// 否則,繼續向右上移動。
else {
hero.moveXY(xPos, yPos);
}
}
十字路口
// 在食人魔攻擊的方向放置火焰陷阱("fire-trap")。
while(true) {
var enemy = hero.findNearestEnemy();
if(enemy) {
// 如果敵人在英雄的左側:
if(enemy.pos.x < hero.pos.x) {
// 如果敵人從左邊進攻,那就在左邊建置火焰陷阱("fire-trap")。
hero.buildXY("fire-trap", 25, 34);
// 如果敵人在英雄的右側:
} else if (enemy.pos.x > hero.pos.x) {
// 如果敵人從右邊進攻,那就在右邊建置火焰陷阱("fire-trap")。
hero.buildXY("fire-trap", 55, 34);
// 如果敵人在英雄下面。
} else if (enemy.pos.y < hero.pos.y) {
// 如果敵人從下面進攻,那就在下面建置火焰陷阱("fire-trap")。
hero.buildXY("fire-trap", 40, 19);
// 如果敵人在英雄上面。
} else if (enemy.pos.y > hero.pos.y) {
// 如果敵人從上面進攻,那就在上面建置火焰陷阱("fire-trap")。
hero.buildXY("fire-trap", 40, 49);
}
}
// 移動回中心。
hero.moveXY(40, 34);
}
雷蹄
// 抵達綠洲
// 用柵欄"fence"擋住犛牛的道路並繼續前進
while(true) {
var yak = hero.findNearestEnemy();
if (yak) {
// 犛牛在你上面,可以用 if 犛牛的 y 座標大於你的 y 座標來判斷
if (yak.pos.y > hero.pos.y) {
// 假如有犛牛在你上面,在犛牛下面 10 公尺建造一個柵欄"fence"
hero.buildXY("fence", yak.pos.x, yak.pos.y - 10);
}
// 否則:
if (yak.pos.y < hero.pos.y) {
// 假如有犛牛在你下面,在犛牛上面 10 公尺建造一個柵欄"fence"
hero.buildXY("fence", yak.pos.x, yak.pos.y + 10);
}
} else {
// 向右移動 10 公尺前往綠洲
hero.moveXY(hero.pos.x + 10, hero.pos.y);
}
}
操弄 'Killdeer'
// 引誘食人魔掉入陷阱。
// 這些食人魔只會追殺受重傷的英雄。
// 此功能可以檢查英雄的血量和傳回一個布林值。
// 並返回一個布爾型(Boolean)的值。
function shouldRun() {
if (hero.health < hero.maxHealth / 2) {
return true;
} else {
return false;
}
}
while (true) {
var enemy = hero.findNearestEnemy();
// 使用 shouldRun() 撤退到 X標誌。 true
if (shouldRun()) {
hero.moveXY(75, 37);
}
// 否則,奮戰!
else {
hero.attack(enemy);
}
}
醫療注意
// 當你生命值少於一半時,請求醫療人員的治療。
while(true) {
var currentHealth = hero.health;
var healingThreshold = hero.maxHealth / 2;
var enemy = hero.findNearestEnemy();
// 如果你當前的健康值少於下限,
// move to the healing point and say, "heal me".
// 否則的話,攻擊。你需要戰鬥的更狠點!
if (hero.health < healingThreshold) {
hero.moveXY(65, 46);
hero.say("heal me");
}
else if (enemy) {
hero.attack(enemy);
}{
}
}
跟上時間
// 使用你的新技能來選擇你要做什麼 hero.time
while(true) {
var enemy = hero.findNearestEnemy();
var item = hero.findNearestItem()
// 如果時間在10秒內,攻擊
if (hero.time < 10 && enemy) {
hero.attack(enemy);
}
// 反之,如果是前35秒,收集金幣。
else if (hero.time < 35 && item) {
hero.moveXY(item.pos.x, item.pos.y);
}
// 在35秒後,加入襲擊部隊!
else {
hero.attack(enemy);
}
}
囤積黃金
// 收集25金幣,然後告訴 Naria 總數
// 當金幣總數大於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("你好 Naria,我收集了 " + totalGold + " 金幣!");
誘餌鑽
// 我們在測試一個新的戰鬥單位:誘餌。
// 創建4個誘餌,然後匯報給 Naria
var decoysBuilt = 0;
while(true) {
var coin = hero.findNearestItem();
if(coin) {
// 收集錢幣!
hero.moveXY(coin.pos.x, coin.pos.y);
}
// 每個誘餌消費25個金幣。
// 來確認甚麼時候錢幣多於 25, 用
if (hero.gold >= 25) {
// 用buildXY建造一個"decoy"
hero.buildXY("decoy", hero.pos.x, hero.pos.y);
// 製作進行時,要記得計算你製作的草人誘餌數量
decoysBuilt += 1;
}
if(decoysBuilt == 4) {
// 當你創建了4個誘餌時跳出循環
break;
}
}
hero.say("完成創建誘餌!");
hero.moveXY(14, 36);
// 到 Naria 那裏並說 (say) 你製作了多少草人誘餌
hero.say("Naria我製作了" + decoysBuilt + "草人誘餌");
連續的鍊金術
// 誘騙口渴的敵人喝下毒藥, 或和敵人比賽, 看誰先搶到 Omarn Brewstone 法師 所蒸餾的水.
// 使用`continue`來確認是否有敵人可以開始騙它喝毒藥
while(true) {
var enemy = hero.findNearestEnemy();
var item = hero.findNearestItem();
// 如果沒有敵人, 不再進行後續的動作, 直接繼續下個迴圈
if(!enemy) {
continue;
}
// 如果發現了敵人, 但法師尚未給予任何物品, 使用 `say` 請求法師, 並使用 `continue` 先進行下次迴圈, 等待法師.
if(!item) {
hero.say("給我點喝的!");
continue;
}
// 當有物品時, 使用 `if` 語句確認物品的類型, 如果是 毒藥 (`item.type == "poison"`), 不和怪物搶, 使用 continue 進行下個迴圈.
if (item.type == "poison") {
continue;
}
// 如果不是毒藥的話, 那就是水, 趕快去搶, 搶完後並回到原點 ( 你要記得原點的位置 )
// 使用moveXY移到藥水,然後回到起點!
if (item.type != "poison") {
hero.moveXY(item.pos.x, item.pos.y);
hero.moveXY(34, 47);
}
}
雙臉頰
// 第一點,打敗6位ogres~
// 然後收集硬幣,直到你有 30 金幣。
// 變量用來對獸人計數
var defeatedOgres = 0;
// 沒打敗6位獸人,就繼續打
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();
hero.moveXY(item.pos.x, item.pos.y);
// 去掉這行 say()。
}
// 移動到出口。
hero.moveXY(76, 32);
沙漠戰役
// while循環重複直到條件為否。
var ordersGiven = 0;
while (ordersGiven < 5) {
// 在站場上移動和排列你的盟友。 (如果你是直接在他們面前,他們只能聽到你的。)
hero.moveXY(hero.pos.x, hero.pos.y - 10);
// 用 hero.say 命令你的盟友 "Attack!" (攻擊!)
// 你只有站在X標誌上,他們才會聽你的命令。
hero.say("Attack!");
// 確保 ordersGiven 要加 1!
ordersGiven += 1;
}
while(true) {
var enemy = hero.findNearestEnemy();
// 當你下達完命令,立即加入戰鬥!
hero.attack(enemy);
}
塵埃
// 使用循環直到你有足夠的擊殺10個芒奇金人
var attacks = 0;
while (attacks < 10) {
// 攻擊最近的敵人!
var enemy = hero.findNearestEnemy();
hero.attack(enemy);
// 增量意味著增加1。
// 增加你的攻擊統計量。
attacks += 1;
}
// 當你完成後,撤退到伏擊點。
hero.say("I should retreat!");
// 別站在那兒說個不停!趕緊撤回伏擊點
hero.moveXY(79, 33);
別衝過去,安靜點
// 閃避大砲並收集 8 個寶石。
// 當心,大砲準備開火!
// 以一個特殊的方式緩慢移動去迷惑敵人
// 這個函數必須回報 0 到 30 的值:
function mod30(n) {
if (n >= 30) {
return n - 30;
} else {
return n;
}
}
// 這一功能將會返回一個從0到40的值
function mod40(n) {
// 使用一個 “if” 語句去返回正確的值
if (n >=40) {
return n - 40
} else {
return n;
}
}
// 你不需要改變下面的代碼:
while (true) {
var time = hero.time;
var x = mod30(time) + 25;
var y = mod40(time) + 10;
hero.moveXY(x, y);
}
Z字行逃竄
// 從死亡峽谷逃出!
// 使用真正的求餘函數走出Z字形路線。
// 該函數返回一個0到15之間的值:
function mod15(n) {
while (n >= 15) {
n -= 15;
}
return n;
}
// 這個函數應該會反饋一個從0到9的值
function mod9(n) {
// 在返回前使用 while 循環修改參數。
while(n >= 9) {
n -=9
}
return n;
}
// 不要更改以下代碼:
while (true) {
var time = hero.time;
var x, y;
if (time < 30) {
y = 10 + 3 * mod15(time);
} else {
y = 20 + 3 * mod9(time);
}
x = 10 + time;
hero.moveXY(x, y);
}
最大公約數
// 計算秘密數字並進入寶庫。
// 這兩個人知道密碼的關鍵。
var friends = hero.findFriends();
var number1 = friends[0].secretNumber;
var number2 = friends[1].secretNumber;
// 只是為了確保第一個數字更大。
if (number2 > number1) {
var swap = number1;
number1 = number2;
number2 = swap;
}
// 這是求gcd的簡單函數,但很慢。
function bruteforceGCD (a, b) {
hero.say("樸素算法。");
var cycles = 0;
// 我們枚舉了所有可能的除數。
var counter = b;
while (true) {
cycles++;
if (cycles > 100) {
hero.say("計算是困難的。我累了。");
break;
}
// 如果兩個數字都有"counter"除數。
if (a % counter === 0 && b % counter === 0) {
break;
}
counter--;
}
hero.say("我使用了 " + cycles + " 周期");
return counter;
}
// 這是求出gcd的聰明方式。
function euclidianGCD (a, b) {
var cycles = 0;
while (b) {
cycles++;
var swap = b;
b = a % b;
a = swap;
}
hero.say("我使用了 " + cycles + " 周期");
return a;
}
// 也許你需要使用另一個函數?
var secretNumber = euclidianGCD(number1, number2); // ∆
hero.moveXY(48, 34);
hero.say(secretNumber);
// 寶庫開了(希望如此)!進去!
hero.moveXY(68, 34)
沙漠三角州
// 只攻擊在敵軍名稱(enemyNames)數組中的敵人
// 一定要按順序攻擊! 0→1→2→3
var enemyNames = ["Kog", "Godel", "Vorobun", "Rexxar"];
hero.attack(enemyNames[0]);
hero.attack(enemyNames[1]);
// 攻擊 enemyNames[2]
hero.attack(enemyNames[2]);
// 攻擊最後一個元素。
hero.attack(enemyNames[3]);
立方雷區
// 穿過雷區
// 這個函數返回乘以次數的數字。
function mult(number, times) {
var total = 0;
while (times > 0) {
total += number;
times--;
}
return total;
}
// 這個函數返回乘方的數字。
function power(number, exponent) {
var total = 1;
// 補全函數。
while(exponent > 0) {
total *= number;
exponent--;
}
return total;
}
// 別修改這些代碼
// 你可以在塔上找到方程的係數
var tower = hero.findFriends()[0];
var a = tower.a;
var b = tower.b;
var c = tower.c;
var d = tower.d;
var x = hero.pos.x;
while (true) {
// 用三次方程求路徑
var y = a * power(x, 3) + b * power(x, 2) + c * power(x, 1) + d * power(x, 0);
hero.moveXY(x, y);
x = x + 5;
}
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;
}
// 回去建造柵欄讓食人魔遠離。
hero.moveXY(26, 30);
hero.buildXY("fence", 30, 30);
銀行突襲
// 等待獸人,擊敗他們並收集黃金。
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 用於迭代 coins 數組。
var coinIndex = 0;
while (coinIndex < coins.length) {
// 用 coinIndex 從 coins 數組得到一個金幣。
var coin = coins[coinIndex]
// 收集那個金幣。
hero.moveXY(coin.pos.x, coin.pos.y);
// 給 coinIndex 的值增加 1。
coinIndex++;
}
}
潛伏
// 用findEnemies把敵人存在數組enemies中
// 只攻擊薩滿巫師,不要攻擊犛牛!
var enemies = hero.findEnemies();
var enemyIndex = 0;
// 把這段代碼用一個while loop 功能循環遍歷所有的敵人
// 當 enemyIndex 小於 enemies 的長度時:
while (enemyIndex < enemies.length) {
var enemy = enemies[enemyIndex];
if (enemy.type == 'shaman') {
while (enemy.health > 0) {
hero.attack(enemy);
}
}
// 記得增加 enemyIndex
enemyIndex++;
}
Sarven 牧羊人
// 使用 while 循環來對付食人魔。
while (true) {
var enemies = hero.findEnemies();
var enemyIndex = 0;
// 將攻擊邏輯放到 while 循環裡來攻擊所有的敵人。
// 用這個查找數組的長度: enemies.length
while (enemyIndex < enemies.length) {
var enemy = enemies[enemyIndex];
// "!=" 意思是 "不等於"
if (enemy.type != "sand-yak") {
// 當敵人的健康值大於0,攻擊它!
while (enemy.health > 0) {
hero.attack(enemy);
}
}
enemyIndex++;
}
// 在兩波敵人之間,移動回中央。
hero.moveXY(40, 32);
}
撿閃亮東西的人
// 很快的獲取最多的金幣
while(true) {
var coins = hero.findItems();
var coinIndex = 0;
// 把這個封裝進循環裡枚舉所有的硬幣
while(coinIndex < coins.length) {
var coin = coins[coinIndex];
coinIndex += 1;
}
// 金幣價值3點。
if (coin.value == 3) {
// 只撿金幣。
hero.moveXY(coin.pos.x, coin.pos.y);
}
}
瘋狂的 Maxer
// 優先殺掉最遠的敵人。
while(true) {
var farthest = null;
var maxDistance = 0;
var enemyIndex = 0;
var enemies = hero.findEnemies();
// 查看全部敵人,找出最遠的那個。
while (enemyIndex < enemies.length) {
var target = enemies[enemyIndex];
enemyIndex += 1;
// 是不是有敵人比我們能看到的最遠的敵人還要遠?
var distance = hero.distanceTo(target);
if (distance > maxDistance) {
maxDistance = distance;
farthest = target;
}
}
if (farthest) {
// 幹掉最遠的敵人!
// 如果敵人血量大於0就保持攻擊。
while(farthest.health > 0) {
hero.attack(farthest);
}
}
}
沙蛇
// 這片區域佈滿了火焰陷阱。幸好我們之前派出了偵察員,他沿路在地上留下了寶石作為暗號,我們只需要順著最近的寶石走就能躲過這些陷阱。
// 沙漠峽谷似乎會干擾你使用眼鏡的findNearest技能!
// 你需要自己找到離你最近的寶石。
while(true) {
var coins = hero.findItems();
var coinIndex = 0;
var nearest = null;
var nearestDistance = 9999;
// 搜索所有的寶石,找到離你最近的那一顆。
while(coinIndex < coins.length) {
var coin = coins[coinIndex];
coinIndex++;
var distance = hero.distanceTo(coin);
// 如果寶石與你的距離小於“最近距離(nearestDistance)”
if (distance < nearestDistance) {
// 設置該寶石為離你最近的寶石
var nearest = coin
// 設置該距離為“最近距離(nearestDistance)”
var nearestDistance = distance
}
}
// 如果找到離你最近的寶石,移動英雄島寶石的位置。你需要使用moveXY,不需要你抄近路,也不會踩到陷阱。
hero.moveXY(nearest.pos.x, nearest.pos.y)
}
脆弱的士氣
// 你只有一個弓箭手,要發揮他的作用
// 這將返回一個最多生命值的敵人
function findStrongestEnemy(enemies) {
var strongest = null;
var strongestHealth = 0;
var enemyIndex = 0;
// 當 enemyIndex 少於敵人的長度
while(enemyIndex < enemies.length) {
// 將enemy變量設置為enemies[enemyIndex]
var enemy = enemies[enemyIndex];
// 如果 enemy.health 大於 strongestHealth
if(enemy.health > strongestHealth) {
// 將 strongest 賦值為 enemy
// 將enemy.health賦值為strongestHealth
strongest = enemy;
strongestHealth = enemy.health;
}
// 讓 enemyIndex 遞增
enemyIndex += 1;
}
return strongest;
}
var enemies = hero.findEnemies();
var leader = findStrongestEnemy(enemies);
if (leader) {
hero.say(leader);
}
一打寶石
// 打敗前來劫掠的食人魔,讓他們把金幣交出來!
function findMostHealth(enemies) {
var target = null;
var targetHealth = 0;
var enemyIndex = 0;
while(enemyIndex < enemies.length) {
var enemy = enemies[enemyIndex];
if(enemy.health > targetHealth) {
target = enemy;
targetHealth = enemy.health;
}
enemyIndex += 1;
}
return target;
}
function valueOverDistance(item) {
return item.value / hero.distanceTo(item);
}
// 返回有最高 valueOverDistance(item) 的物品。
function findBestItem(items) {
var bestItem = null;
var bestValue = 0;
var itemsIndex = 0;
// 循環於 items 數組內。
// 發現這個物品的最高 valueOverDistance()
while(itemsIndex < items.length) {
var item = items[itemsIndex]
var itemValue = valueOverDistance(item)
if(itemValue > bestValue) {
bestItem = item;
bestValue = itemValue;
}
itemsIndex +=1;
}
return bestItem;
}
while(true) {
var enemies = hero.findEnemies();
var enemy = findMostHealth(enemies);
if(enemy && enemy.health > 15) {
while(enemy.health > 0) {
hero.attack(enemy);
}
} else {
var coins = hero.findItems();
var coin = null;
coin = findBestItem(coins);
if(coin) {
hero.moveXY(coin.pos.x, coin.pos.y);
}
}
}
許願井
// 你需要104的金錢,不多也不少。
var less = "Nimis";
var more = "Non satis";
var requiredGold = 104;
// 此函數計算所有的硬幣值的總和。
function sumCoinValues(coins) {
var coinIndex = 0;
var totalValue = 0;
// 遍歷所有的金幣。
while (coinIndex < coins.length) {
totalValue += coins[coinIndex].value;
coinIndex++;
}
return totalValue;
}
function collectAllCoins() {
var item = hero.findNearest(hero.findItems());
while (item) {
hero.moveXY(item.pos.x, item.pos.y);
item = hero.findNearest(hero.findItems());
}
}
while (true) {
var items = hero.findItems();
// 獲得硬幣的總值
var goldAmount = sumCoinValues(items);
// 如果有金幣,那麼金幣數目 (goldAmount) 不會是零
if (goldAmount !== 0) {
// 如果 goldAmount 小於requiredGold
if(goldAmount < requiredGold) {
// 那就說“Non satis”
hero.say(more);
}
else if(goldAmount > requiredGold){
// 如果 goldAmount 大於requiredGold
hero.say(less);
// 那麼說出"Nimis"。
}
else {
// 如果 “goldAmount” 等於 “requiredGold”
collectAllCoins();
// 如果有剛好 104 金幣,就全部收集。
}
}
}
毒氣攻擊
// 計算所有食人魔的總生命值。
function sumHealth(enemies) {
// 創建一個變量,將它設為0後開始運算
var totalHealth = 0;
// 初始化循環索引為0
var enemyIndex = 0;
// 雖然索引小於敵人數組的長度
while(enemyIndex < enemies.length) {
// 將當前敵人的生命值添加到總生命值裡
totalHealth += enemies[enemyIndex].health;
// 讓 index 遞增
enemyIndex ++;
}
return totalHealth;
}
// 使用加農炮來打敗食人魔。
var cannon = hero.findNearest(hero.findFriends());
// 加農炮可以穿透牆壁。
var enemies = cannon.findEnemies();
// 計算食人魔生命值的總和。
var ogreSummaryHealth = sumHealth(enemies);
hero.say("使用 " + ogreSummaryHealth + " 克。");
公平之戰
// 直到你士兵的總生命值大於獸人的.
// 在你的士兵取得優勢前不要發起進攻.
// 此函數返回所有單位運行狀況的總和。
function sumHealth(units) {
var totalHealth = 0;
// 完成此功能:
var unitIndex = 0;
while(unitIndex < units.length) {
totalHealth += units[unitIndex].health;
unitIndex += 1;
}
return totalHealth;
}
while (true) {
var friends = hero.findFriends();
var enemies = hero.findEnemies();
// 計算並比較你的士兵和獸人的總生命值.
if (sumHealth(friends) <= sumHealth(enemies)) {
hero.say("Wait");
}
// 當你準備好後說“Attack”.
else {
hero.say("ATTACK!!!");
}
}
Sarven 圍困
// 在可重複的挑戰中防守你的塔!
// 如果你有20個金幣,就移動到X上建造一個士兵
function valueOverDistance(item) {
return item.value / hero.distanceTo(item);
}
// 返回有最高 valueOverDistance(item) 的物品。
function findBestItem(items) {
var bestItem = null;
var bestValue = 0;
var itemsIndex = 0;
// 循環於 items 數組內。
// 發現這個物品的最高 valueOverDistance()
while(itemsIndex < items.length) {
var item = items[itemsIndex]
var itemValue = valueOverDistance(item)
if(itemValue > bestValue) {
bestItem = item;
bestValue = itemValue;
}
itemsIndex +=1;
}
return bestItem;
}
while(true) {
if(hero.gold < 20) {
var coins = hero.findItems();
var coin = null;
coin = findBestItem(coins);
if(coin) {
hero.moveXY(coin.pos.x, coin.pos.y);
}
}
else {
var enemy = hero.findNearestEnemy();
if (enemy.pos.y < hero.pos.y) {
hero.moveXY(84, 22);
}
else {
hero.moveXY(84, 78);
}
}
}
克隆衝突
processing...