Тема:
Аргументы
Переменные
Строки
Циклы
Массивы
Литералы объектов
Цели:
Герой должен выжить.
Забаррикадируйте базу.
Бонус: Собери 60 золотых перед отходом.
Руководство:
Вступление:
Используйте findItems() для получения массива всех монет. Дальше используйте findNearest(array), что бы найти ближайший элемент в массиве.
Запомните, как построить объект литерал: {«x»: 16, «y»:38}
Описание:
Используйте findItems(), что бы найти монеты. Для того, что бы получить бонус, вы должны подумать, как вам заработать монеты. Используйте литерал объектов, например {x:16, y:38}, чтобы перейти к определённому месту, например за забор.
Пройдоха в ущелье Огров, прохождение:
Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# У тебя только 20 секунд до прихода толпы огров! # Хватай столько монет, сколько сможешь и уноси ноги на базу, закрывая проход за собой! while hero.now() < 20: # Собирай монеты #hero.say("Нужно собирать монетки") items = self.findItems() gold = hero.findNearest(items) maxcost = gold.value/hero.distanceTo(gold) while len(items)>i: if items[i].value/hero.distanceTo(items[i])>maxcost: gold=items[i] maxcost = gold.value/hero.distanceTo(gold) i+=1; self.move(gold.pos) while hero.pos.x > 16: # Беги за ограду #hero.say("Пора бежать") self.move({"x":16, "y":38}) # Дострой стену, чтобы спрятаться от огров. self.buildXY("fence", 21, 37) |
JavaScript:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
// У тебя только 20 секунд до прихода толпы огров! // Хватай столько монет, сколько сможешь и уноси ноги на базу, закрывая проход за собой! while(hero.now() < 20) { // Собирай монеты //hero.say("Нужно собирать монетки"); var items = hero.findItems(); var gold = hero.findNearest(items); var maxcost = gold.value/hero.distanceTo(gold); var i=0; while (items.length>i){ if (items[i].value/hero.distanceTo(items[i])>maxcost){ //hero.say("gold!"); gold = items[i]; maxcost = gold.value/hero.distanceTo(gold); //gold[gold.length] = items[i]; } i+=1; } if (gold.length === 0){ gold = items; } hero.move(gold.pos); } while(hero.pos.x > 16) { // Беги за ограду //hero.say("Пора бежать"); hero.move({x:16,y:38}); } hero.buildXY("fence", 21, 37); // Дострой стену, чтобы спрятаться от огров. |
CoffeScript:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# Призови несколько солдат и отправь их на базу. # Каждый солдат стоит 20 золотых. while @gold > @costOf "soldier" @summon "soldier" soldiers = @findFriends() soldierIndex = 0 # Добавь цикл while для командования всеми солдатами. while soldiers.length>soldierIndex soldier = soldiers[soldierIndex] @command soldier, "move", {x: 50, y: 40} soldierIndex+=1 # Присоединись к боевым товарищам! while @pos.x<50 @move {x:50, y:40} |
Clojure:
1 |
;; |
LUA:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
-- У тебя только 20 секунд до прихода толпы огров! -- Хватай столько монет, сколько сможешь и уноси ноги на базу, закрывая проход за собой! while self:now() < 20 do -- Собирай монеты -- self:say("Нужно собирать монетки") local items = self:findItems() local gold = self:findNearest(items) local maxcost = gold.value/self:distanceTo(gold) local i = 0 while #items>i do if items[i].value/self:distanceTo(items[i])>maxcost then gold = self:findNearest(items) maxcost = gold.value/self:distanceTo(gold) end i=i+1 end self:move(gold.pos) end while self.pos.x > 16 do -- Беги за ограду --- self:say("Пора бежать") self:move({x=16,y=38}) end -- Дострой стену, чтобы спрятаться от огров. self:buildXY("fence", 21, 37) |
Комментарии: