Тема:
Аргументы
Строки
Циклы
Условные операторы
Обработка ввода
Переменные
Цели:
Убейте огров на своей половине карты.
Руководство:
Информация
Предпоказ
При выполнении некоторых действиях ваш герой приостанавливает выполнять код вашей программы пока они выполняются. Одним из таких действий является атака.
Когда вы активизируете атаку на врага, а этот враг далеко, ваша программа перестанет выполнять другие команды (например, pickUpFlag) пока ваш герой бежит к противнику.
На этом уровне, это означает, что ваш герой будет бежать прямо на мины! (Бум!)
Чтобы этого избежать, вы будете использовать distanceTo, и атаковать врагов только если они находятся в пределах 10 метров от вас.
Потом, используйте свои флаги, чтобы переместить ближе к любому врагу которого вы хотите атаковать!
Награда:
Защити фермера, прохождение:
Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# Если ты попробуешь атаковать врага, твой герой будет это делать, игнорируя все флаги. # Ты должен убедиться, что ты атакуешь врагов, которые находятся рядом с тобой! loop: flag = self.findFlag() enemy = self.findNearestEnemy() if flag: # Возьми флаг. self.pickUpFlag(flag) #self.say("Я должен взять флаг.") elif enemy: # Атакуй врага, если он находится на расстоянии < 10 метров if (self.distanceTo(enemy)< 10): if self.isReady("cleave"): self.cleave(enemy) else: self.attack(enemy) |
JavaScript:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
// Если ты попробуешь атаковать врага, твой герой будет это делать, игнорируя все флаги. // Ты должен убедиться, что ты атакуешь врагов, которые находятся рядом с тобой! loop { var flag = this.findFlag(); var enemy = this.findNearestEnemy(); if(flag) { // Возьми флаг. this.pickUpFlag(flag); //this.say("Я должен взять флаг."); } else if(enemy) { // Атакуй врага, если он находится на расстоянии < 10 метров if (this.distanceTo(enemy)<10) { if (this.isReady("cleave")) { this.cleave(enemy); } else { this.attack(enemy); } } } } |
CoffeScript:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# Если ты попробуешь атаковать врага, твой герой будет это делать, игнорируя все флаги. # Ты должен убедиться, что ты атакуешь врагов, которые находятся рядом с тобой! loop flag = @findFlag() enemy = @findNearestEnemy() if flag # Возьми флаг. @pickUpFlag(flag) # @say "Я должен взять флаг." else if enemy # Атакуй врага, если он находится на расстоянии < 10 метров if @distanceTo(enemy)<10 if @isReady "cleave" @cleave enemy else @attack enemy else @shield() |
Clojure:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
;; Если ты попробуешь атаковать врага, твой герой будет это делать, игнорируя все флаги. ;; Ты должен убедиться, что ты атакуешь врагов, которые находятся рядом с тобой! (dotimes [n 1000] (def flag (.findFlag this)) (def enemy (.findNearestEnemy this)) (if flag ;; Возьми флаг. (.pickUpFlag this flag) ;; (.say this "Я должен взять флаг.") (if enemy ;; Атакуй врага, если он находится на расстоянии < 10 метров (if (< (.distanceTo this enemy) 10) (if (.isReady this "cleave") (.cleave this enemy) (.attack this enemy) ) (.shield this) ) (.shield this) ) ) ) |
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 |
-- TODO: translate to clojure -- Если ты попробуешь атаковать врага, твой герой будет это делать, игнорируя все флаги. -- Ты должен убедиться, что ты атакуешь врагов, которые находятся рядом с тобой! --loop: -- flag = self.findFlag() -- enemy = self.findNearestEnemy() -- if flag: -- Возьми флаг. -- self.say("Я должен взять флаг.") -- elif enemy: -- Атакуй врага, если он находится на расстоянии < 10 метров -- self.attack(enemy) loop local enemy = self:findNearestEnemy() flag = self:findFlag() if flag then -- Возьми флаг. self:pickUpFlag(flag) else if enemy then -- Атакуй врага, если он находится на расстоянии < 10 метров if self:distanceTo(enemy) < 10 then if self:isReady("cleave") then self:cleave(enemy) else self:attack(enemy) end end end end end |
Комментарии: