Тема:
Аргументы
Переменные
Строки
Циклы
Арифметика
Массивы
Цели:
Огры должны умереть.
Руководство:
Вступление:
Используйте вызвать и команду, чтобы защитить себя во время сбора монет.
Обзор:
Пришло время попрактиковаться в призыве и командовании солдатами! Пример кода показывает, как использовать costOf, что бы проверить достаточно ли у вас золота, для призыва солдат.
Если вы используете summon, для призыва «soldier».
Затем используй цикл и пробегись по массиву солдат используя кманду attack, что бы ваши солдаты нападали на врагов.
Примечание, пример кода показывает вам, как это сделать.
Горные наёмники, прохождение:
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 25 26 27 28 29 30 31 32 |
# Соберите монеты, чтобы вызвать солдат и атаковать ими врагов. while True: # Переход к ближайшей монете. # Используйте 'move' вместо 'moveXY', чтобы командовать постоянно. #hero.say("Мне нужны монеты!") items = self.findItems() gold = hero.findNearest(items) i=0 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) # Если у вас достаточно монет для солдата, вызвать одного. if hero.gold > hero.costOf("soldier"): #hero.say("Я должен здесь что-то вызвать!") self.summon("soldier") enemy = hero.findNearest(hero.findEnemies()) if enemy: # Цикл по всем вашим солдатам и приказ им об атаке. soldierIndex = 0 soldiers = hero.findFriends() while soldierIndex<len(soldiers): soldier = soldiers[soldierIndex] # Используйте команду 'attack', чтобы заставить ваших солдат атаковать. hero.command(soldier, "attack", enemy) soldierIndex+=1 |
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 35 36 37 |
// Соберите монеты, чтобы вызвать солдат и атаковать ими врагов. while(true) { // Переход к ближайшей монете. // Используйте 'move' вместо 'moveXY', чтобы командовать постоянно. //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){ gold = items[i]; maxcost = gold.value/hero.distanceTo(gold); } i+=1; } hero.move(gold.pos); // Если у вас достаточно монет для солдата, вызвать одного. if (hero.gold > hero.costOf("soldier")) { //hero.say("Я должен здесь что-то вызвать!"); hero.summon("soldier"); } var enemy = hero.findNearest(hero.findEnemies()); if (enemy) { // Цикл по всем вашим солдатам и приказ им об атаке. var soldiers = hero.findFriends(); var soldierIndex = 0; while (soldierIndex<soldiers.length) { var soldier = soldiers[soldierIndex]; // Используйте команду 'attack', чтобы заставить ваших солдат атаковать. hero.command(soldier, "attack", enemy); soldierIndex += 1; } } } |
CoffeScript:
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 |
# Соберите монеты, чтобы вызвать солдат и атаковать ими врагов. loop # Переход к ближайшей монете. # Используйте 'move' вместо 'moveXY', чтобы командовать постоянно. #@say "Мне нужны монеты!" items = @findItems() gold = @findNearest items maxcost = gold.value/@distanceTo(gold) i=0 while items.length>i if items[i].value/@distanceTo(items[i])>maxcost gold = items[i] maxcost = gold.value/@distanceTo(gold) i +=1 @move gold.pos # Если у вас достаточно монет для солдата, вызвать одного. if @gold > @costOf "soldier" #@say "Я должен здесь что-то вызвать!" @summon "soldier" enemy = @findNearest @findEnemies() if enemy # Цикл по всем вашим солдатам и приказ им об атаке. soldiers = @findFriends() soldierIndex = 0 while soldierIndex<soldiers.length soldier = soldiers[soldierIndex] # Используйте команду 'attack', чтобы заставить ваших солдат атаковать. @command soldier, "attack", enemy soldierIndex +=1 |
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 28 29 30 31 32 33 34 35 36 37 38 39 |
-- Соберите монеты, чтобы вызвать солдат и атаковать ими врагов. while true do -- Переход к ближайшей монете. -- Используйте 'move' вместо 'moveXY', чтобы командовать постоянно. -- self:say("Мне нужны монеты!") local items = self:findItems() local gold = self:findNearest(items) local maxcost = gold.value/self:distanceTo(gold) local i = 1 while i<#items+1 do if items[i].value/self:distanceTo(items[i])>maxcost then gold = items[i] maxcost = gold.value/self:distanceTo(gold) end i=i+1 end self:move(gold.pos) -- Если у вас достаточно монет для солдата, вызвать одного. if self.gold > self:costOf("soldier") then --self:say("Я должен здесь что-то вызвать!") self:summon("soldier") end local enemy = self:findNearest(self:findEnemies()) if enemy then -- Цикл по всем вашим солдатам и приказ им об атаке. local soldiers = self:findFriends() local soldierIndex = 1 while soldierIndex<#soldiers do local soldier = soldiers[soldierIndex] -- Используйте команду 'attack', чтобы заставить ваших солдат атаковать. self:command(soldier, "attack", enemy) soldierIndex = soldierIndex +1 end end end |
Комментарии: