當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
codecombat极客战记森林(JavaScript)41-60关卡
生活随笔
收集整理的這篇文章主要介紹了
codecombat极客战记森林(JavaScript)41-60关卡
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
PS:JavaScript版本,方便和我一樣的前端小白,找不到攻略卡關卡的EMO!
41-以靜制動
?
// 你可以將一個if語句放到另一個if語句當中。 // 你必須注意這些if語句是如何互相影響的。 // 從外層if/else結構開始會有幫助。 // 使用注釋為內層if/else占位預留空間:while(true) {var enemy = hero.findNearestEnemy();// 如果有敵人出現,那么就...if(enemy) {// 使用distanceTo創建一個距離變量。if (hero.distanceTo(enemy) < 5){hero.attack(enemy);}// 如果敵人與你的距離小于5米,那么就攻擊。// 否則(敵人還離得很遠),那么就使用shield。// 否則(沒有敵人)...} else {// …那么,回到X位置。hero.moveXY(40, 34);} }42-AGRIPPA守衛戰
while(true) { var enemy = hero.findNearestEnemy(); if (enemy) { var distance = hero.distanceTo(enemy); var ready = hero.isReady('cleave'); if (distance < 5) { if (ready) { hero.cleave(enemy); } else { hero.attack(enemy); } } } }//心態小炸,所以原本的標注被清空,但是能通關?43-AGRIPPA守衛戰A
while(true) {var enemy = hero.findNearestEnemy();if(enemy) {// 用 distanceTo 獲取與敵人的距離。var distance = hero.distanceTo(enemy);// 如果距離小于5米...var ready = hero.isReady("cleave");if (distance < 5) {if (ready) {hero.cleave(enemy);}else {hero.attack(enemy);}}// ...如果"cleave"技能準備好了,就用cleave干掉他們!// ...否則,僅僅進行普通攻擊。} }?44-那什么守衛戰B
while(true) {var enemy = hero.findNearestEnemy();if(enemy) {// 用 distanceTo 獲取與敵人的距離。var distance = hero.distanceTo(enemy);// 如果距離小于5米...if(distance < 5){}var ready = hero.isReady("cleave");if (ready) {hero.cleave(enemy);}else {hero.attack(enemy);}// ...如果"cleave"技能準備好了,就用cleave干掉他們!// ...否則,僅僅進行普通攻擊。} } //三場那什么守衛戰代碼都是一樣的?45-村莊守護神
// 食人魔矮人來襲!保護鎮子!// 定義你自己的函數來對抗敵人! function cleaveOrAttack() {// 在函數中,找到敵人,然后劈斬或是攻擊它。var ogre = hero.findNearestEnemy();if (ogre) {if (hero.isReady("cleave")) {hero.cleave(ogre);}// 否則,攻擊食人魔:else {hero.attack(ogre);}} }// 在巡邏點之間移動并調用函數。 while (true) {hero.moveXY(35, 34);// 使用上面定義的cleaveOrAttack函數。cleaveOrAttack();hero.moveXY(47, 27);// 再次調用函數。cleaveOrAttack();hero.moveXY(60, 31);// 再次調用函數。cleaveOrAttack(); }46-鄉村巡游者:這關代碼無問題,截圖懶得改了
// 這定義了findAndAttackEnemy函數 function findAndAttackEnemy() {var enemy = hero.findNearestEnemy();if (enemy) {hero.attack(enemy);} }// 這段代碼不是函數的一部分。 while(true) {// 現在你可以使用findAndAttackEnemy在村子里巡邏hero.moveXY(35, 34);findAndAttackEnemy();// 現在移動到右側入口。hero.moveXY(60, 31);findAndAttackEnemy();// 使用findAndAttackEnemy}47-村莊守護神
// 食人魔矮人來襲!保護鎮子!// 定義你自己的函數來對抗敵人! function cleaveOrAttack() {// 在函數中,找到敵人,然后劈斬或是攻擊它。var ogre = hero.findNearestEnemy();if (ogre) {if (hero.isReady("cleave")) {hero.cleave(ogre);}// 否則,攻擊食人魔:else {hero.attack(ogre);}} }// 在巡邏點之間移動并調用函數。 while (true) {hero.moveXY(35, 34);// 使用上面定義的cleaveOrAttack函數。cleaveOrAttack();hero.moveXY(47, 27);// 再次調用函數。cleaveOrAttack();hero.moveXY(60, 31);// 再次調用函數。cleaveOrAttack(); }?48-造幣廠
// 差役試圖偷取你的硬幣! // 編寫一個函數,在差役盜取硬幣前將其干掉。function pickUpCoin() {var coin = hero.findNearestItem();if(coin) {hero.moveXY(coin.pos.x, coin.pos.y);} }// 在下方寫一個攻擊敵人的函數attackEnemy。 // 尋找最近的敵人,如果存在敵人就進行攻擊。function attackEnemy(){var enemy = hero.findNearestEnemy();if (enemy) {hero.attack(enemy);}}while(true) {attackEnemy(); // ? 在寫好 attackEnemy 函數后取消這一行的注釋。pickUpCoin(); }?49-短時的樹精:別運行直接提交(運行會顯示失敗)
?
// 收集硬幣,然后逃跑,否則樹精會發現你。// 這個函數能讓你的英雄拾取一個物品。 function takeItem(item) {hero.moveXY(item.pos.x, item.pos.y); }// 編寫帶一個參數的函數"checkTakeRun"。 // 如果物品存在,請使用"takeItem"函數來獲取。 // 無論有沒有物品,都記得回到初始點(綠色標記)。 function checkTakeRun(item){if (item) {takeItem(item);hero.moveXY(40, 12); } else {hero.moveXY(40, 12); } } // 不要更改這段代碼。 while (true) {hero.moveXY(16, 56);var coin = hero.findNearestItem();checkTakeRun(coin);hero.moveXY(64, 56);coin = hero.findNearestItem();checkTakeRun(coin); }50-森林礦工
// 檢查工人們能否安全挖礦。function checkEnemyOrSafe(target) {// 如果`target`(參數)存在:if (target) {hero.attack(target);}// 那么攻擊目標。// 否則:else {hero.say("baka");}// 使用say() 說點什么來叫農民。}while (true) {// 移動到并檢查右上的X標記。hero.moveXY(64, 54);var enemy1 = hero.findNearestEnemy();checkEnemyOrSafe(enemy1);// 移動到左下的X標記處。hero.moveXY(16, 14);// 將findNearestEnemy()的結果存到一個變量中。var enemy2 = hero.findNearestEnemy();// 調用checkEnemyOrSafe,并傳遞// findNearestEnemy的結果作為參數checkEnemyOrSafe(enemy2); }51-捉迷藏
?
// 收集4顆發光石,用來打敗食人魔斗士。 // 如果找到發光石的話,藏起來。 function checkTakeHide(item) {if (item) {// 物品在此,拿走它。hero.moveXY(item.pos.x, item.pos.y);// 然后移動到營地中央(40, 34)hero.moveXY(40, 34);} } while (true) {// 移動到右上的X標記。hero.moveXY(68, 56);// 在那里搜索一塊發光石。var lightstone = hero.findNearestItem();// 調用checkTakeHide,并使用參數:lightstonecheckTakeHide(lightstone);// 移動到左上角的標記。hero.moveXY(12, 56);// 搜索發光石。// 調用checkTakeHide函數。// 將搜索的結果作為參數傳入。 }52-郵件截停
// 攔截并伏擊所有食人魔信使。function ambushAttack(target) {// 如果目標存在則攻擊目標,并返回標記。// 編寫函數:if (target) {hero.attack(target);hero.moveXY(52, 36);} }while(true) {var ogre = hero.findNearestEnemy();ambushAttack(ogre); }53-墓地陰魂
// 唯一的出口被食人魔堵住了。 // 躲著骷髏怪,并一個個擊敗食人魔。// 這個函數需要攻擊敵人并隱藏。 function hitOrHide(target) {// 如果'target'存在:// 攻擊'target'。if (target) {hero.attack(target);// 然后移動到紅色標記。hero.moveXY(32, 17); } } while (true) {var enemy = hero.findNearestEnemy();hitOrHide(enemy); }?54-盜墓者
?
// 森林中一座被遺忘的墓地! // 但是食人魔緊追不舍。 // 在防御食人魔矮人的同時打開墓地之門。// 這個函數應該在敵人存在時攻擊,否則攻擊門! function checkToDefend(target) {// 檢查`target`是否存在var targer = hero.findNearestEnemy();// 如果是這樣,攻擊`target`if (targer) {hero.attack(target);}// 如果沒有`target`,使用else去做點別的事else {hero.attack("Door");}// 否則攻擊 "Door"}while(true) {var enemy = hero.findNearestEnemy();checkToDefend(enemy); }55-邊地之叉
// 使用 checkAndAttack 函數讓代碼易讀。// 這個函數有一個形式參數。 // 形式參數是一種給函數傳遞信息的方式。 function checkAndAttack(target) {// 形式參數'target'只是一個變量!// 它會容納函數調用時的實際參數。if(target) {hero.attack(target);}hero.moveXY(43, 34); }while(true) {hero.moveXY(58, 52);var topEnemy = hero.findNearestEnemy();// 使用帶topEnemy變量的checkAndAttack函數。checkAndAttack(topEnemy);// 移動到底部的X標記處。hero.moveXY(58, 16);// 創建名為 bottomEnemy 的變量并尋找最近敵人。var bottomEnemy = hero.findNearestEnemy();// 使用 checkAndAttack 函數,并使用 bottomEnemy 變量。checkAndAttack(bottomEnemy); }56-AGRIPPA重構
function cleaveOrAttack(enemy) {// 如果"cleave"技能冷卻完畢,那就使用它!否則,使用普通攻擊。if (hero.isReady("cleave")) {hero.cleave(enemy);}else {hero.attack(enemy);} }while(true) {var enemy = hero.findNearestEnemy();if(enemy) {var distance = hero.distanceTo(enemy);if(distance < 5) {// 調用上面定義的"cleaveOrAttack"函數cleaveOrAttack(enemy);}} }57-交給劈斬
// 這里展示了如何定義一個叫作cleaveWhenClose的函數 // 函數定義了一個形式參數,名為`target` function cleaveWhenClose(target) {if(hero.distanceTo(target) < 5) {// 將你的攻擊代碼放到這里。// 如果cleave準備就緒,那就劈斬目標var ready = hero.isReady("cleave");if (ready) {hero.cleave(enemy);}// 否則,使用attack攻擊目標(`target`)!else {hero.attack(target);}} }// 這段代碼不是函數的一部分。 while(true) {var enemy = hero.findNearestEnemy();if(enemy) {// 注意在cleaveWhenClose內部,我們將`enemy`稱為`target`。cleaveWhenClose(enemy);} }?58-邊地好伙伴
// 你現在擁有一個寵物!function speak(event) {// 你的寵物需要用pet.say()進行回應pet.say("mother_f**k"); } // 這將告訴你的寵物,在聽到聲音時運行speak()函數 pet.on("hear", speak);// 和你的寵物交流吧! hero.say("你好小貓");?59-邊地伏擊A
// 在這個關卡中,你將使用具有兩個參數的函數。 // 看看下面的結構,注意兩個參數。 // 這些都可在函數內訪問。function checkAndAttack(x, y) {// 首先移動到參數提供的坐標。hero.moveXY(x, y);// 然后檢查敵人。var enemy = hero.findNearestEnemy();if (enemy) {hero.attack(enemy);}// 如果有一個的話,攻擊它!}checkAndAttack(24, 42); checkAndAttack(27, 60); // 移動到最后3個x標記并擊敗任何剩余的食人魔矮人。 checkAndAttack(42, 50); checkAndAttack(39, 24); checkAndAttack(55, 29);60-友和敵
// 農民和差役聚集在森林里。 // 命令農民戰斗,差役滾開!while(true) {var friend = hero.findNearestFriend();if(friend) {hero.say("去戰斗, " + friend.id + "!");}// 尋找最近的敵人,然后讓他們滾開。var enemy = hero.findNearestEnemy();if (enemy) {hero.say("take out," + enemy.id + "!");} }總結
以上是生活随笔為你收集整理的codecombat极客战记森林(JavaScript)41-60关卡的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android平台上实现银行卡识别(通过
- 下一篇: js室内地图开发_入门指南-室内地图 J