Тема:
Условные операторы
Циклы
Булевая Логика
Циклы «for»
Функции
Аргументы
Цели:
Ваш олень должен выжить.
Бонус: Ни один из ваших союзников не умрёт.
Заметки:
Если ваши лучники слишком далеко отойдут от ваших олений, орки выскачат из засады и нападут на ваших оленей. Таким образом, держите лучников около оленей.
Для того что бы это сделать, вам придётся отдавать лучникам команды command(archer, «move», archer.pos), это означает «стой там где ты находишься». Это необходимо делать, так как по умолчанию ваши лучники будут приследовать врага, если не получают ни каких команд.
Если враг будет находится в зоне атаки лучника (25 метров), ваш лучник сможет атаковать врага.
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 33 34 35 36 37 38 39 40 41 |
# Огры будут пытаться убить вашего оленя! # Удерживайте ваших лучником на месте, призывая солдатов атаковать. def pickUpCoin(): # Соберите монеты. hero.move((hero.findNearest(hero.findItems())).pos) def summonTroops(): # Призовите солдат если у Вас есть золото. if hero.gold>hero.costOf("soldier"): hero.summon("soldier") # У этой функции есть аргумент названный солдатом. # Аргументы похожи на переменные. # Стоимость аргумента определена, когда вызвана функцуя. def commandSoldier(soldier): # Солдаты должны атаковать противника. if soldier.health>50: enemy = soldier.findNearestEnemy() if enemy: hero.command(soldier, "attack", enemy) else: hero.command(soldier, "move", {"x":26,"y":26}) # Напишите функцию commandArcher что бы сказать своим лучникам что делать! # Она должна принимать один аргумент, который будет представлять лучника переданного функции при вызове. # Лучники должны атаковать врагов, только если они ближе 25 метров, иначе, ждать на своих позициях. def commandArcher(archer): hero.command(archer, "move", archer.pos) while True: pickUpCoin() summonTroops() friends = hero.findFriends() for friend in friends: if friend.type == "soldier": # This friend will be assigned to the variable soldier in commandSoldier commandSoldier(friend) elif friend.type == "archer": # Уверенно командуйте Вашими лучниками. commandArcher(friend) |
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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
// Огры будут пытаться убить вашего оленя! // Удерживайте ваших лучником на месте, призывая солдатов атаковать. hero.pickUpCoin = function() { // Соберите монеты. hero.move((hero.findNearest(hero.findItems())).pos); }; hero.summonTroops = function() { // Призовите солдат если у Вас есть золото. if (hero.gold>hero.costOf("soldier")){ hero.summon("soldier"); } }; // У этой функции есть аргумент названный солдатом. // Аргументы похожи на переменные. // Стоимость аргумента определена, когда вызвана функцуя. hero.commandSoldier = function(soldier) { // Солдаты должны атаковать противника. if (soldier.health>50){ var enemy = soldier.findNearestEnemy(); if (enemy){ hero.command(soldier, "attack", enemy); } } else { hero.command(soldier, "move", {x:26,y:26}); } }; // Напишите функцию commandArcher что бы сказать своим лучникам что делать! // Она должна принимать один аргумент, который будет представлять лучника переданного функции при вызове. // Лучники должны атаковать врагов, только если они ближе 25 метров, иначе, ждать на своих позициях. hero.commandArcher = function(archer) { hero.command(archer, "move", archer.pos); }; while(true) { hero.pickUpCoin(); hero.summonTroops(); var friends = hero.findFriends(); for(var i=0; i < friends.length; i++) { var friend = friends[i]; if(friend.type == "soldier") { // This friend will be assigned to the variable soldier in commandSoldier hero.commandSoldier(friend); } else if(friend.type == "archer") { // Уверенно командуйте Вашими лучниками. hero.commandArcher(friend); } } } |
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 33 34 35 36 37 38 39 40 41 42 |
# Огры будут пытаться убить вашего оленя! # Удерживайте ваших лучником на месте, призывая солдатов атаковать. @pickUpCoin = -> # Соберите монеты. @move (@findNearest(@findItems())).pos #@say "I should collect coins!" @summonTroops = -> # Призовите солдат если у Вас есть золото. if @gold>@costOf "soldier" @summon "soldier" #@say "I should summon soldiers!" # У этой функции есть аргумент названный солдатом. # Аргументы похожи на переменные. # Стоимость аргумента определена, когда вызвана функцуя. @commandSoldier = (soldier) -> # Солдаты должны атаковать противника. if soldier.health>50 enemy = soldier.findNearestEnemy() if enemy @command soldier, "attack", enemy else @command soldier, "move", {x:26,y:26} #@say "I should command soldiers!" # Напишите функцию commandArcher что бы сказать своим лучникам что делать! # Она должна принимать один аргумент, который будет представлять лучника переданного функции при вызове. # Лучники должны атаковать врагов, только если они ближе 25 метров, иначе, ждать на своих позициях. @commandArcher = (archer) -> @command archer, "move", archer.pos loop @pickUpCoin() @summonTroops() friends = @findFriends() for friend in friends if friend.type is "soldier" # This friend will be assigned to the variable soldier in commandSoldier @commandSoldier friend else if friend.type is "archer" # Уверенно командуйте Вашими лучниками. @commandArcher friend #@say "I should command archers!" |
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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
-- Огры будут пытаться убить вашего оленя! -- Удерживайте ваших лучником на месте, призывая солдатов атаковать. function self.pickUpCoin() -- Соберите монеты. self:move((self:findNearest(self:findItems())).pos) --self:say("I should collect coins!") end function self.summonTroops() -- Призовите солдат если у Вас есть золото. if self.gold>self:costOf("soldier") then self:summon("soldier") end --self:say("I should summon soldiers!") end -- У этой функции есть аргумент названный солдатом. -- Аргументы похожи на переменные. -- Стоимость аргумента определена, когда вызвана функцуя. function self.commandSoldier(soldier) -- Солдаты должны атаковать противника. if soldier.health>50 then local enemy = soldier:findNearestEnemy() if enemy then self:command(soldier, "attack", enemy) end else self:command(soldier, "move", {x=26,y=26}) end --self:say("I should command soldiers!") end -- Напишите функцию commandArcher что бы сказать своим лучникам что делать! -- Она должна принимать один аргумент, который будет представлять лучника переданного функции при вызове. -- Лучники должны атаковать врагов, только если они ближе 25 метров, иначе, ждать на своих позициях. function self.commandArcher(archer) self:command(archer, "move", archer.pos) end loop self.pickUpCoin() self.summonTroops() local friends = self:findFriends() for friendIndex=1, #friends do if friends[friendIndex].type == "soldier" then -- This friend will be assigned to the variable soldier in commandSoldier self.commandSoldier(friends[friendIndex]) elseif friends[friendIndex].type == "archer" then -- Уверенно командуйте Вашими лучниками. self.commandArcher(friends[friendIndex]) end end end |
Комментарии: