Тема:
Аргументы
Переменные
Строки
Условные операторы
Арифметика
Циклы
Цели:
Огры должны умереть.
Руководство:
Вступление:
Вы должны быть уверены, что ваш while цикл имеет завершающее условие, или вы можете застрянете в бесконечном цикле.
Python:
1 2 3 4 |
ordersGiven = 0 while ordersGiven < 5: # Если вы не сделаете этого, то цикл никогда не закочится! ordersGiven += 1 |
JavaScript:
1 2 3 4 5 |
var ordersGiven = 0; while(ordersGiven < 5) { // Если вы не сделаете этого, то цикл никогда не закочится! ordersGiven += 1 } |
CoffeScript:
1 2 3 4 |
ordersGiven = 0 while ordersGiven < 5 # Если вы не сделаете этого, то цикл никогда не закочится! ordersGiven += 1 |
Clojure:
1 2 3 4 5 |
(def ordersGiven 0) (while (< ordersGiven 5) ;; Если вы не сделаете этого, то цикл никогда не закочится! (def ordersGiven (inc ordersGiven)) ) |
LUA:
1 2 3 4 |
while ordersGiven < 5 do -- Если вы не сделаете этого, то цикл никогда не закочится! ordersGiven = ordersGiven +1 end |
Описание:
Также, как и оператор if, цикл while имеет условие. Каждый раз когда начинается новый виток цикла, с начала он проверяет, соблюдается ли условие. То есть, является ли оно True (истинным). Если да, то цикл выполняется снова. Если же нет, цикл останавливается и Ваша программа переходит к следующему за циклом участку кода.
Другими словами, «Пока условие выполняется, цикл продолжается.»
Примечание Имейте ввиду, что вполне возможно создать бесконечный цикл. Это цикл, в котором условие всегда истинно.
В этом уровне цикл while имеет условие ordersGiven < 5. Не забудьте увеличивать счетчик ordersGiven внутри цикла, иначе Вы рискуете попасть в бесконечный цикл.
Итак, внутри Вашего while цикла Вам нужно:
- Использовать функцию moveXY для того чтобы опуститься вниз на 8 метров.
- Сказать (say) «Attack!»
- Увеличить счетчик ordersGiven на 1.
Затем, после (или снаружи) вашего while цикла, проверяйте наличие врагов и сражайтесь, если таковые имеются.
Подсказка: При использовании простой стратегии, для того чтобы выжить в этом уровне, Вашему герою необходимо иметь 450 единиц здоровья. Если показатель здоровья Вашего персонажа меньше, Вам нужно сражаться хитрее или же спрятаться за спинами союзников.
Награда:
Пустынная Битва, прохождение:
Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# цикл "while" повторяется до тех пор, пока условие не станет ложным ("false"). # Всегда создавай условие для выхода из цикла "while", иначе он будет повторятся бесконечно! ordersGiven = 0 while ordersGiven < 5: # Перемещайся и отдавай приказы каждому из союзников. (Они тебя слышат только если ты стоишь напротив них.) ordersGiven += 1 self.moveXY(self.pos.x, self.pos.y-10) self.say("Attack!") # Be sure to increment ordersGiven! loop: enemy = self.findNearestEnemy() # Когда ты закончишь отдавать приказы, присоединись к атаке. if self.isReady("cleave"): self.cleave(enemy) else if self.isReady("bash"): self.bash(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 23 |
// цикл "while" повторяется до тех пор, пока условие не станет ложным ("false"). // Всегда создавай условие для выхода из цикла "while", иначе он будет повторятся бесконечно! var ordersGiven = 0; while (ordersGiven < 5) { // Перемещайся и отдавай приказы каждому из союзников. (Они тебя слышат только если ты стоишь напротив них.) ordersGiven += 1; this.moveXY(this.pos.x, this.pos.y-10); this.Qsay("Attack!"); // Be sure to increment ordersGiven! } loop { var enemy = this.findNearestEnemy(); // Когда ты закончишь отдавать приказы, присоединись к атаке. if (this.isReady("cleave")){ this.cleave(enemy); } else if (this.isReady("bash")){ this.bash(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 20 21 |
# цикл "while" повторяется до тех пор, пока условие не станет ложным ("false"). # Всегда создавай условие для выхода из цикла "while", иначе он будет повторятся бесконечно! ordersGiven = 0 while ordersGiven < 5 # Перемещайся и отдавай приказы каждому из союзников. (Они тебя слышат только если ты стоишь напротив них.) ordersGiven += 1 @moveXY @pos.x, @pos.y-10 @say "Attack!" # Be sure to increment ordersGiven! loop enemy = @findNearestEnemy() # Когда ты закончишь отдавать приказы, присоединись к атаке. if @isReady "cleave" @cleave enemy else if @isReady "bash" @bash enemy else @attack enemy |
Clojure:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
;; цикл "while" повторяется до тех пор, пока условие не станет ложным ("false"). ;; Всегда создавай условие для выхода из цикла "while", иначе он будет повторятся бесконечно! (def ordersGiven 0) (while (< ordersGiven 5) ;;Перемещайся и отдавай приказы каждому из союзников. (Они тебя слышат только если ты стоишь напротив них.) (def ordersGiven (inc ordersGiven)) (.moveXY this (.x (.pos this)) (- (.y (.pos this)) 10)) (.say this "Attack!") ;;Be sure to increment ordersGiven! ) (dotimes [n 1000] (def enemy (.findNearestEnemy this)) ;; Когда ты закончишь отдавать приказы, присоединись к атаке. (if (.isReady this "cleave") (.cleave this enemy) (if (.isReady this "bash") (.bash this enemy) (.attack this enemy) ) ) ) |
LUA:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
-- цикл "while" повторяется до тех пор, пока условие не станет ложным ("false"). -- Всегда создавай условие для выхода из цикла "while", иначе он будет повторятся бесконечно! local ordersGiven = 0 while ordersGiven < 5 do -- Перемещайся и отдавай приказы каждому из союзников. (Они тебя слышат только если ты стоишь напротив них.) ordersGiven = ordersGiven + 1 self:moveXY(self.pos.x, self.pos.y-10) self:say("Attack!") end -- Когда ты закончишь отдавать приказы, присоединись к атаке. loop enemy = self:findNearestEnemy() if self:isReady("cleave") then self:cleave(enemy) elseif self:isReady("bash") then self:bash(enemy) else self:attack(enemy) end end |
Комментарии: