Тема:
Условные операторы «if/else»
Условные операторы
Вложенные условные операторы
Строки
Переменные
Циклы «while»
Цели:
Победи огров.
Руководство:
Совет 1:
Функция cleaveWhenClose определяет параметр target:
1 2 3 |
def cleaveWhenClose(target): if hero.distanceTo(target) < 5: # cleave or attack here |
JavaScript:
1 2 3 4 5 |
function cleaveWhenClose(target) { if(hero.distanceTo(target) < 5) { // cleave or attack here } } |
CoffeScript:
1 2 3 |
@cleaveWhenClose = (target) -> if @distanceTo(target) < 5: # cleave or attack here |
Clojure:
1 |
LUA:
1 2 3 4 |
local function cleaveWhenClose(target) if hero:distanceTo(target) < 5 then -- cleave or attack here end |
Это позволяет передать врага в качестве аргумента при вызове функции:
cleaveWhenClose(enemy)
Совет 2:
На предыдущих уровнях ты передавал в функцию аргументы. Когда ты пишешь hero.say(«Привет!»), то передаешь строку (String) «Привет!» в качестве аргумента функции say.
Теперь ты научишься задавать параметры, так называются аргументы при определении собственых функций.
На этом уровне ты определяешь функцию cleaveWhenClose, которая принимает параметр target.
Python:
1 2 3 |
def cleaveWhenClose(target): if hero.distanceTo(target) < 5: # cleave or attack here |
JavaScript:
1 2 3 4 5 |
function cleaveWhenClose(target) { if(hero.distanceTo(target) < 5) { // cleave or attack here } } |
CoffeScript:
1 2 3 |
@cleaveWhenClose = (target) -> if @distanceTo(target) < 5: # cleave or attack here |
Clojure:
1 |
LUA:
1 2 3 4 |
local function cleaveWhenClose(target) if hero:distanceTo(target) < 5 then -- cleave or attack here end |
Обрати внимание, что при последующем вызове функции:
cleaveWhenClose(enemy)
enemy обозначает врага вне функции, в то время как переменная target обозначает цель внутри функции. Это две разные переменные, которые указывают на одного и того же огра!
Поручи это рубщику, прохождение:
Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# Здесь показано, как определить функцию `cleaveWhenClose` # Функция определяет параметр `target` def cleaveWhenClose(target): if hero.distanceTo(target) < 5: pass # Помести сюда вызов `attack` # Если готов рубить, то рубить цель if hero.isReady("cleave"): hero.cleave(target) # иначе просто атаковать цель! else: hero.attack(target) # Этот код не входит в функцию. while True: enemy = hero.findNearestEnemy() if enemy: # Заметь, что внутри `cleaveWhenClose` мы ссылаемся на врага с помощью переменной `target`. cleaveWhenClose(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 |
// Здесь показано, как определить функцию `cleaveWhenClose` // Функция определяет параметр `target` function cleaveWhenClose(target) { if(hero.distanceTo(target) < 5) { // Помести сюда вызов `attack` // Если готов рубить, то рубить цель if (hero.isReady("cleave")){ hero.cleave(target); // иначе просто атаковать цель! } else { hero.attack(target); } } } // Этот код не входит в функцию. while(true) { var enemy = hero.findNearestEnemy(); if(enemy) { // Заметь, что внутри `cleaveWhenClose` мы ссылаемся на врага с помощью переменной `target`. cleaveWhenClose(enemy); } } |
CoffeScript:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# Здесь показано, как определить функцию `cleaveWhenClose` # Функция определяет параметр `target` @cleaveWhenClose = (target) -> if @distanceTo(target) < 5: # @say("I should fight") # Помести сюда вызов `attack` # Если готов рубить, то рубить цель if @isRady "cleave" @cleave target # иначе просто атаковать цель! else @attack target # Этот код не входит в функцию. while true enemy = @findNearestEnemy() if enemy # Заметь, что внутри `cleaveWhenClose` мы ссылаемся на врага с помощью переменной `target`. @cleaveWhenClose(enemy) |
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 |
-- Здесь показано, как определить функцию `cleaveWhenClose` -- Функция определяет параметр `target` local function cleaveWhenClose(target) if hero:distanceTo(target) < 5 then -- Помести сюда вызов `attack` -- Если готов рубить, то рубить цель if hero:isReady("cleave") then hero:cleave(target) -- иначе просто атаковать цель! else hero:self:attack(target) end end end -- Этот код не входит в функцию. while true do local enemy = hero:findNearestEnemy() if enemy then -- Заметь, что внутри `cleaveWhenClose` мы ссылаемся на врага с помощью переменной `target`. cleaveWhenClose(enemy) end end |
Хех) вот я чудик! Сперва решил, что бъють, потому что гардероб не обновил, а оно вон оно как…
уже просто даже отсюда скопировал и все равно не нравиться
меняйте язык программирования , у меня стоял coffe java , -поменял скопировал и все ок
Я не очень понял, но CoffeScript не пашет, и клоджур закрыли 🙁
Python и JavaScript пашут всегда, LUA по не известной причине выполняется медленней и иногда это критично.