Тема:
Строки
Условные операторы
Циклы
Массивы
Циклы «for»
Функции
Цели:
Цветы должны вырасти до полного размера.
Гектор должен выжить.
Руководство:
Заметки
На этом уровне с крестьянином связаны два цветка.
Если крестьянин получает повреждения, то два цветка уменьшаются в размерах.
Но если по крестьянину не попадают, цветы продолжают расти. Когда цветы уменьшатся до нормальных размеров цветов, крестьянин будет терять жизнь с каждым полученным ударом.
Чтобы преуспеть, вы должны написать тело двух функций commandSoldiers и pickUpNearestCoin. Мы дали вам функцию summonSoldiers, как пример определения функций.
Не забудьте раскомментировать вызовы функций внутри цикла, когда вы будете готовы!
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 |
# Если крестьянин будет ранен, цветы высыхают! def summonSoldiers(): if hero.gold >= hero.costOf("soldier"): hero.summon("soldier") # Определите функцию: commandSoldiers def commandSoldiers(): army = hero.findByType("soldier") for friend in army: enemy = friend.findNearestEnemy() if enemy and friend.distanceTo(enemy)<5: hero.command(friend, "attack", enemy) else: hero.command(friend, "move", peasant.pos) # Определите функцию: pickUpNearestCoin def pickUpNearestCoin(): hero.move((hero.findNearest(hero.findItems())).pos) peasant = hero.findByType("peasant")[0] while True: summonSoldiers() commandSoldiers() pickUpNearestCoin() |
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 |
// Если крестьянин будет ранен, цветы высыхают! hero.summonSoldiers = function() { if (hero.gold >= hero.costOf("soldier")) { hero.summon("soldier"); } }; // Определите функцию: commandSoldiers hero.commandSoldiers = function() { var friends = hero.findByType("soldier"); for(var i=0; i < friends.length; i++) { var friend = friends[i]; var enemy = friend.findNearestEnemy(); if(enemy && friend.distanceTo(enemy) < 5) { // Прикажи войскам атаковать. hero.command(friend, "attack", enemy); } else { // Прикажи войскам двигаться на точку. hero.command(friend, "move", peasant.pos); } } }; // Определите функцию: pickUpNearestCoin hero.pickUpNearestCoin = function() { hero.move((hero.findNearest(hero.findItems())).pos); }; var peasant = hero.findByType("peasant")[0]; while(true) { hero.summonSoldiers(); hero.commandSoldiers(); hero.pickUpNearestCoin(); } |
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 |
# Если крестьянин будет ранен, цветы высыхают! @summonSoldiers = -> if @gold >= @costOf "soldier" @summon "soldier" # Определите функцию: commandSoldiers @commandSoldiers = -> friends = @findByType "soldier" for friend in friends enemy = friend.findNearestEnemy(); if enemy and friend.distanceTo(enemy)<5 @command friend, "attack", enemy else @command friend, "move", peasant.pos # Определите функцию: pickUpNearestCoin @pickUpNearestCoin = -> @move((@findNearest(@findItems())).pos) peasant = @findByType("peasant")[0] loop @summonSoldiers() @commandSoldiers() @pickUpNearestCoin() #@say "Delete this line once your loop is finite." |
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 |
-- Если крестьянин будет ранен, цветы высыхают! function self.summonSoldiers () if self.gold >= self:costOf("soldier") then self:summon("soldier") end end -- Определите функцию: commandSoldiers function self.commandSoldiers() local friends = self:findByType("soldier") for j=1,#friends do local friend = friends[j] local enemy = friend:findNearestEnemy() if enemy and friend:distanceTo(enemy) < 5 then -- Прикажи войскам атаковать. self:command(friend, "attack", enemy) else -- Прикажи войскам двигаться на точку. self:command(friend, "move", peasant.pos) end end end -- Определите функцию: pickUpNearestCoin function self.pickUpNearestCoin() self:move((self:findNearest(self:findItems())).pos) end local peasant = self:findByType("peasant")[1] loop self:summonSoldiers() self:commandSoldiers() self:pickUpNearestCoin() end |
Комментарии: