//站在农民和塔之间。while(true){varenemy=hero.findNearestEnemy();varfriend=hero.findNearestFriend();//通过将friend.pos.x和enemy.pos.x相加来计算x//然后除以2。//如需更多帮助,请查看指南!varx=(friend.pos.x+enemy.pos.x)/2;//现在对y做同样的事情vary=(friend.pos.y+enemy.pos.y)/2;//移动到计算得到的X和Y坐标。hero.moveXY(x,y);}
第42关:雷蹄
//向右朝绿洲移动。//看到牦牛时,在上方或是下方建造一段"fence"while(true){varyak=hero.findNearestEnemy();if(yak){//如果yak.pos.y大于hero.pos.yif(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);}}else{//使用moveXY向右朝绿洲移动10米。hero.moveXY(hero.pos.x+10,hero.pos.y);}}
第43关:Kithgard附魔师
//定义你自己的简单移动函数。//定义moveRight//注意:每个函数都应该让英雄移动12米!functionmoveRight(){varx=hero.pos.x+12;vary=hero.pos.y;hero.moveXY(x,y);}//定义moveDownfunctionmoveDown(){varx=hero.pos.x;vary=hero.pos.y-12;hero.moveXY(x,y);}//定义moveUpfunctionmoveUp(){varx=hero.pos.x;vary=hero.pos.y+12;hero.moveXY(x,y);}//现在,使用这些函数!moveRight();moveDown();moveUp();moveUp();moveRight();
第44关:扫雷
//带领农民和医生穿越雷区。while(true){varcoin=hero.findNearestItem();varhealingThreshold=hero.maxHealth/2;//检查你是否身受重伤。if(hero.health 第45关:'Killdeer'操作 //诱使食人魔陷入陷阱。这些食人魔很谨慎。//只有英雄受伤时,他们才会追击。//该函数检查英雄的生命值//并返回一个布尔值。functionshouldRun(){if(hero.health 第46关:医疗护理 //当你的生命值少于一半时,请求治疗师的帮助。while(true){varcurrentHealth=hero.health;varhealingThreshold=hero.maxHealth/2;//如果你当前的生命值低于界限值,//转移到治疗点并说,"healme".//否则的话,攻击。你需要奋战!varenemy=hero.findNearestEnemy();if(currentHealth 第47关:守时 //使用你的新技能来选择你要做什么:hero.timewhile(true){//如果是前十秒,攻击。if(hero.time<10){varaa=hero.findNearestEnemy();if(aa){hero.attack(aa);}}//否则,如果是前35秒,收集硬币。elseif(hero.time<35){varcoin=hero.findNearestItem();if(coin){hero.moveXY(coin.pos.x,coin.pos.y);}}//35秒后,再次发起攻击!else{varbb=hero.findNearestEnemy();if(bb){hero.attack(bb);if(hero.health 第48关:沙漠十字 //弄清食人魔来自哪个方向。while(true){varenemy=hero.findNearestEnemy();if(enemy){//左边:enemy.pos.x小于hero.pos.xvarisLeft=hero.pos.x>enemy.pos.x;//上方:enemy.pos.y大于hero.pos.yvarisAbove=hero.pos.y 第49关:囤积黄金 //收集25金,然后告诉Naria总数。//当totalGold>=25,使用break来停止收集。vartotalGold=0;while(true){varcoin=hero.findNearestItem();if(coin){//捡起硬币。hero.moveXY(coin.pos.x,coin.pos.y);//将硬币的价值加到totalGold。//使用以下方法得到它的价值::coin.valuetotalGold+=coin.value;}if(totalGold>=25){//这会中断跳出循环并执行循环下面的语句。//循环结束后,运行循环后的代码。break;}}//完成收集黄金!hero.moveXY(58,33);//去告诉Naria你收集了多少黄金。hero.say("你好Naria,我收集了"+totalGold+"金"); 第50关:诱饵演习 //我们在测试一个新的建造类型:诱饵(decoy)。//建造4个诱饵,然后汇报总数给Naria。vardecoysBuilt=0;while(true){varcoin=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+=1;}if(decoysBuilt==4){//建造了4个诱饵后跳出循环。break;}}hero.say("完成诱饵建造!");hero.moveXY(14,36);//说出你建造了多少诱饵。hero.say("我建造了"+decoysBuilt+"个诱饵"); 第51关:炼金术传承 //和食人魔矮人抢OmarnBrewstone提取出的水!//使用`continue`语句避开毒药。while(true){varenemy=hero.findNearestEnemy();varitem=hero.findNearestItem();//如果没有敌人,使用continue跳出此轮循环继续运行。if(!enemy){continue;}//如果没有物品,要一瓶药水,然后continue。if(!item){hero.say("给我点喝的!");continue;}//如果item.type是"poison",使用continue跳出此轮循环继续运行。if(item.type=="poison"){continue;}//此时,药水一定是一瓶水//使用moveXY移到药水,然后回到起点!if(item.type!=="position"){hero.moveXY(44,35);hero.moveXY(34,47);}} 第52关:快速赛跑 //使用事件处理器,这样宠物和英雄都会跑起来!functionpetMove(event){pet.moveXY(50,21);}//使用pet.on("spawn",petMove)替换petMove()//这样你的英雄和宠物就会同时跑起来。//Δ把这个用pet.on("spawn",petMove)替换pet.on("spawn",petMove);hero.moveXY(50,12); 第53关:沙漠蘑菇 //收集9个蘑菇。//这个函数让宠物给你取回药水。functiononSpawn(event){while(true){//宠物可以根据类型找到最近的物品。varpotion=pet.findNearestByType("potion");//如果存在药水则让宠物取回:if(potion){pet.fetch(potion);}}}pet.on("spawn",onSpawn);//蘑菇有毒,不要太快收集。while(true){varsomeItem=hero.findNearestItem();if(someItem&&hero.health>hero.maxHealth/3){//收集someItem:hero.moveXY(someItem.pos.x,someItem.pos.y);}} 第54关:蘑菇之声 //打败骷髅并打开宝箱。functiononSpawn(event){//宠物要找到生命药水(类型是"potion"):varpotion=pet.findNearestByType("potion");//并将它取回:pet.fetch(potion);//宠物要找到金钥匙(类型是"gold-key"):varkey=pet.findNearestByType("gold-key");//并将它取回:pet.fetch(key);}//宠物可以发现的不仅仅是物品:varskeleton=pet.findNearestByType("skeleton");pet.on("spawn",onSpawn);while(true){if(skeleton.health>0){hero.attack(skeleton);}else{hero.moveXY(31,38);}} 第55关:钥匙陷阱 //获得三把钥匙并释放圣骑士。functiononSpawn(event){//宠物需要找到并拿回3把钥匙。//你需要后续类型的物品://"bronze-key"、"silver-key"和"gold-key"。varkey1=pet.findNearestByType("bronze-key");pet.fetch(key1);varkey2=pet.findNearestByType("silver-key");pet.fetch(key2);varkey3=pet.findNearestByType("gold-key");pet.fetch(key3);}pet.on("spawn",onSpawn);while(true){varenemy=hero.findNearestEnemy();if(enemy&&enemy.team=="ogres"){hero.attack(enemy);}if(hero.health<300){//你也可以在主线程中使用宠物。varpotion=pet.findNearestByType("potion");if(potion){hero.moveXY(potion.pos.x,potion.pos.y);}}} 第56关:命令链 //只有你的宠物可以唤醒巫师。functiononHear(event){//"hear"事件设置event.speaker属性。//检查宠物是否听到了英雄的话:if(event.speaker==hero){pet.say("WOOF");}}//为"hear"事件指派事件处理器。pet.on("hear",onHear);while(true){varenemy=hero.findNearestEnemy();//如果有敌人:if(enemy){//使用hero.say()提醒你的宠物hero.say("这里有敌人!");//移动到营地内的X处。hero.moveXY(30,26);//然后返回营地外的X处。hero.moveXY(30,16);}} 第57关:宠物工程师 //根据需要将宠物移到左或右按钮。functiononHear(event){//找到门卫vararcher=pet.findNearestByType("archer");varsoldier=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){varenemy=hero.findNearestEnemy();if(enemy){hero.attack(enemy);}} 第58关:宠物翻译家 //你的宠物应该翻译命令。functiononHear(event){//宠物听到的消息在event.message中varmessage=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){varenemy=hero.findNearestEnemy();//不要攻击Brawlers。if(enemy&&enemy.type!="brawler"){hero.attack(enemy);}} 第59关:宠物副官 //你的宠物可以帮助你活下来,直到你可以逃脱。functiononHear(event){//event.message包含所听到的文本。//如果有人说"Fire"if(event.message=="Fire"){//用pet.moveXY()移动到底部的X标记pet.moveXY(64,16);//使用pet.say()说点什么pet.say("我是最厉害的");}//如果有人说"Heal"elseif(event.message=="Heal"){//用pet.moveXY()移动到顶部的X标记pet.moveXY(64,52);//使用pet.say()说点什么pet.say("我是最厉害的");}}pet.on("hear",onHear);//您不必更改下面的代码。while(true){varenemy=hero.findNearestEnemy();if(enemy){//如果敌人太强大。if(enemy.type=="brawler"){hero.say("Fire");}else{hero.attack(enemy);}}else{//如果你的英雄需要治疗。if(hero.health 第60关:炼金术 //等着炼金师的命令去拿药水。//宠物事件的事件处理程序"hear"。functiononHear(event){//找到最近的药水。varpotion=pet.findNearestByType("potion");varmessage=event.message;varitem=hero.findNearestItem();//如果事件的消息是"Fetch"if(event.message=="Fetch"){//让宠物拿取药水。pet.fetch(item);}//其他(对于任何其他消息):else{//用pet.moveXY让宠物回到红色标记。pet.moveXY(54,34);}}pet.on("hear",onHear);//您不必更改下面的代码。while(true){varenemy=hero.findNearest(hero.findEnemies());if(enemy){hero.attack(enemy);}else{hero.moveXY(40,34);}} 第61关:危险钥匙 //听圣骑士的,取回正确的钥匙。functiononHear(event){//宠物可以找到圣骑士和钥匙。varpaladinUnit=pet.findNearestByType("paladin");vargoldKey=pet.findNearestByType("gold-key");varsilverKey=pet.findNearestByType("silver-key");varbronzeKey=pet.findNearestByType("bronze-key");//如果event.speaker是paladinUnit:if(event.speaker==paladinUnit){//如果event.message是"Gold":if(event.message=="Gold"){//宠物需要取金钥匙。pet.fetch(goldKey);}//如果event.message是"Silver":elseif(event.message=="Silver"){//宠物需要取银钥匙。pet.fetch(silverKey);}//如果event.message是"Bronze":elseif(event.message=="Bronze"){//宠物需要取青铜钥匙。pet.fetch(bronzeKey);}}}pet.on("hear",onHear); 第62关:奥林匹克比赛 //宠物必须赢得比赛。//运动员需要触碰队伍标记,然后往回跑。functiononHear(event){varreferee=pet.findNearestByType("wizard");//如果说话的人是裁判员referee并且说的是"Start":if(event.speaker==referee&&event.message=="Start"){//让宠物跑到红色标记。pet.moveXY(53,27);//然后跑回来。pet.moveXY(6,27);}}//指派onHear函数来处理"hear"事件。pet.on("hear",onHear);