Тема:
Базовый синтаксис
Оператор «continue»
Циклы
Условные операторы
Переменные
Цели:
Пейте воду, что бы выжить.
Руководство:
Вступление:
Используйте выражение continue, чтобы остановить текущую итерацию цикла, и продолжить всё сначала в следующей.
Python:
1 2 3 4 5 |
while True: if not enemy: continue self.say("I see an enemy!") |
JavaScript:
1 2 3 4 5 6 7 |
while(true) { if(!enemy) { continue; } this.say("I see an enemy!"); } |
CoffeScript:
1 2 3 4 5 |
while true if not enemy continue @say "I see an enemy!" |
Clojure:
Да в Clojure и break не было!(И к стати я не считаю что это плохо… break и continue зло!) но допустим вот так %) то есть дальнейший код пишется внутри (when ) а не как авторы игры пишут его после условия с continue…. фу фу фу на них…
1 2 3 4 5 6 |
(def enemy (.findNearestEnemy this)) (while true (when (enemy) ) ) |
LUA:
В LUA нет continue, каждый сам за себя… опять же не считаю что так надо писать… но если так уж хочется реализовать continue…. мы с помощью break прерываем первый цикл, а верхний запускает его заново….
1 2 3 4 5 6 7 8 |
while true do while true do if not enemy then break end self:say("I see an enemy!") end end |
Описание:
Этот уровень научит вас использовать оператор contnue. Когда на участке программы встречается оператор contnue, остальная часть цикла отбрасывается, и начинается следующий шаг цикла.
Omarn Stonebrew являетя важным человеком. Важно проверить , есть в засаде враг, и нет никаких других элементов на поле.
Обязательно проверьте item.type, чтобы случайно не выпить яд!
Contnue можно использовать для пропуска блока кода, пока условие не будет выполнено:
Python:
1 2 3 4 5 |
while True: if not enemy: continue self.say("I see an enemy!") |
JavaScript:
1 2 3 4 5 6 7 |
while(true) { if(!enemy) { continue; } this.say("I see an enemy!"); } |
CoffeScript:
1 2 3 4 5 |
while true if not enemy continue @say "I see an enemy!" |
Clojure:
Да в Clojure и break не было!(И к стати я не считаю что это плохо… break и continue зло!) но допустим вот так %) то есть дальнейший код пишется внутри (when ), а не как авторы игры пишут его после условия с continue…. фу фу фу на них…
1 2 3 4 5 6 |
(def enemy (.findNearestEnemy this)) (while true (when (enemy) ) ) |
LUA:
В LUA нет continue, каждый сам за себя… опять же, не считаю что так надо писать… но если так уж хочется реализовать continue…. мы с помощью break прерываем цикл внутри, а верхний цикл запускает его заново….
1 2 3 4 5 6 7 8 |
while true do while true do if not enemy then break end self:say("I see an enemy!") end end |
Не позволяйте Манчкина достичь воды! Пустынные обезвоженные Огры станут могущественными, если им дадут возможность утолить жажду.
От себя:
Ещё раз фу фу фу… на авторов игры… они плохому учат… не пользуйтесь break и continue если это возможно, а это очень редко не возможно. И тогда ваш код будет чистый и читаемый…
Награда:
Продолжительная алхимия, прохождение:
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 |
# Обгони манчкинов в борьбе за воду, очищенную Omarn Brewstone. # Ключевое слово `continue` - мощная штука для реализации сложной логики. # Когда выполнение программы доходит до ключевого слова `continue`, оставшийся код цикла в текущей итерации будет пропущен. # Однако, в отличии от ключевого слова `break`, выполнение цикла продолжится. # Используй ключевое слово `continue` в проверке условий засады. loop: enemy = self.findNearestEnemy() item = self.findNearestItem() # Если нет врага, продолжаем выйдя из этого витка цикла. if not enemy: continue # Если есть враг, но нет предмета, просим зелье и продолжаем выйдя из этого витка. if not item: self.say("Дай мне попить!") continue # Используйте ключевое слово `if`, чтобы проверить тип (type) предмета. Если это яд ("poison"), продолжаем выйдя из этого витка. if item.type == "poison": continue else: self.moveXY(44, 36) self.moveXY(34, 47) # Если нет, то зелье должно быть бутылкой воды, так что двигаемся к нему и возвращаемся обратно! |
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 |
// Обгони манчкинов в борьбе за воду, очищенную Omarn Brewstone. // Ключевое слово `continue` - мощная штука для реализации сложной логики. // Когда выполнение программы доходит до ключевого слова `continue`, оставшийся код цикла в текущей итерации будет пропущен. // Однако, в отличии от ключевого слова `break`, выполнение цикла продолжится. // Используй ключевое слово `continue` в проверке условий засады. loop { var enemy = this.findNearestEnemy(); var item = this.findNearestItem(); // Если нет врага, продолжаем выйдя из этого витка цикла. if(!enemy) { continue; } // Если есть враг, но нет предмета, просим зелье и продолжаем выйдя из этого витка. if(!item) { this.say("Дай мне попить!"); continue; } // Используйте ключевое слово `if`, чтобы проверить тип (type) предмета. Если это яд ("poison"), продолжаем выйдя из этого витка. if (item.type=="poison"){ continue; } else { // Если нет, то зелье должно быть бутылкой воды, так что двигаемся к нему и возвращаемся обратно! this.moveXY(44, 36); this.moveXY(34, 47); } } |
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 |
# Обгони манчкинов в борьбе за воду, очищенную Omarn Brewstone. # Ключевое слово `continue` - мощная штука для реализации сложной логики. # Когда выполнение программы доходит до ключевого слова `continue`, оставшийся код цикла в текущей итерации будет пропущен. # Однако, в отличии от ключевого слова `break`, выполнение цикла продолжится. # Используй ключевое слово `continue` в проверке условий засады. loop enemy = @findNearestEnemy() item = @findNearestItem() # Если нет врага, продолжаем выйдя из этого витка цикла. if not enemy continue # Если есть враг, но нет предмета, просим зелье и продолжаем выйдя из этого витка. if not item @say "Дай мне попить!" continue # Используйте ключевое слово `if`, чтобы проверить тип (type) предмета. Если это яд ("poison"), продолжаем выйдя из этого витка. if item.type == "poison" continue # Если нет, то зелье должно быть бутылкой воды, так что двигаемся к нему и возвращаемся обратно! else @moveXY 44, 36 @moveXY 34, 48 return |
Clojure:
Повторюсь continue в clojure нет. Но переживать по этому поводу не стоит.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
;; Обгони манчкинов в борьбе за воду, очищенную Omarn Brewstone. ;; Ключевое слово `continue` - мощная штука для реализации сложной логики. ;; Когда выполнение программы доходит до ключевого слова `continue`, оставшийся код цикла в текущей итерации будет пропущен. ;; Однако, в отличии от ключевого слова `break`, выполнение цикла продолжится. ;; Используй ключевое слово `continue` в проверке условий засады. (while true (def item (.findNearestItem this)) (def enemy (.findNearestEnemy this)) ;; Если нет бутылки, но есть враг (when (and (not item) enemy) (.say this "Дай мне попить!") ) ;; Если есть бутылка и бутылка не яд (when (and item (not (= (.type item) "poison"))) (.moveXY this 44 36) (.moveXY this 34 48) ) ) |
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 |
-- Обгони манчкинов в борьбе за воду, очищенную Omarn Brewstone. -- Ключевое слово `continue` - мощная штука для реализации сложной логики. -- Когда выполнение программы доходит до ключевого слова `continue`, оставшийся код цикла в текущей итерации будет пропущен. -- Однако, в отличии от ключевого слова `break`, выполнение цикла продолжится. -- Используй ключевое слово `continue` в проверке условий засады. loop loop enemy = self:findNearestEnemy() item = self:findNearestItem() -- Если нет врага, продолжаем выйдя из этого витка цикла. if not enemy then break end -- Если есть враг, но нет предмета, просим зелье и продолжаем выйдя из этого витка. if not item then self:say("Дай мне попить!") break end -- Используйте ключевое слово `if`, чтобы проверить тип (type) предмета. Если это яд ("poison"), продолжаем выйдя из этого витка. if item.type == "poison" then break -- Если нет, то зелье должно быть бутылкой воды, так что двигаемся к нему и возвращаемся обратно! else self:moveXY(44, 36) self:moveXY(34, 47) end end end |
Комментарии: