Тема:
Базовый синтаксис
Переменные
Цели:
Ваш герой должен выжить.
Убей трёх огров.
Руководство:
Введение:
Переменные хранят информацию чтобы ссылаться на неё позже. Вы можете назначить новое значение переменной в любое время.
Используйте метод findNearestEnemy() чтобы указать на ближайшего врага.
Python:
1 |
closestEnemy = self.findNearestEnemy() |
JavaScript:
1 |
var closestEnemy = this.findNearestEnemy(); |
CoffeScript:
1 |
closestEnemy = @findNearestEnemy() |
Clojure:
1 |
(def closestEnemy (.findNearestEnemy this)) |
LUA:
1 |
local closestEnemy = self:findNearestEnemy() |
Обзор:
Помните с предыдущего уровня, что перменные ссылки на участки памяти (ячейки), в которых хранится информация. Значение переменных может изменяться когда мы сохраняем в них новые данные, вот почему они называются переменными.
Теперь вместо использования имён врагов, вы можете использовать очки и метод findNearestEnemy(), чтобы сохранять ссылки на огров в переменных. Вам не нужно использовать их имена.
Когда вы используете метод findNearestEnemy(), вы должны сохранить результат в переменной, например enemy3 (можете назвать её как захотите). В переменной запомнится кто был ближайшим к вам врагом в момент вызова метода findNearestEnemy(), поэтому убедитесь, что вызываете его, когда ближайший враг находится в пределах видимости.
Помните: когда вы используете кавычки, как например в "Kratt", то вы создаёте строку. Когда вы не используете кавычек, как например в enemy1, то вы ссылаетесь на переменную enemy1.
Огр-манчкин по-прежнему требует двух ударов чтобы сокрушить его.
Известный враг, прохождение:
Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# Ваш герой не знает имен своих врагов! # Очки дают вам способность findNearestEnemy. enemy = self.findNearestEnemy() self.attack(enemy) self.attack(enemy) enemy = self.findNearestEnemy() self.attack(enemy) self.attack(enemy) enemy = self.findNearestEnemy() self.attack(enemy) self.attack(enemy) |
JavaScript:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// Ваш герой не знает имен своих врагов! // Очки дают вам способность findNearestEnemy. var enemy = this.findNearestEnemy(); this.attack(enemy); this.attack(enemy); enemy = this.findNearestEnemy(); this.attack(enemy); this.attack(enemy); enemy = this.findNearestEnemy(); this.attack(enemy); this.attack(enemy); |
CoffeScript:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# Ваш герой не знает имен своих врагов! # Очки дают вам способность findNearestEnemy. enemy = @findNearestEnemy() @attack enemy @attack enemy enemy = @findNearestEnemy() @attack enemy @attack enemy enemy = @findNearestEnemy() @attack enemy @attack enemy |
Clojure:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
;; Ваш герой не знает имен своих врагов! ;; Очки дают вам способность findNearestEnemy. (let [enemy (.findNearestEnemy this)] (.attack this enemy) (.attack this enemy)) (let [enemy (.findNearestEnemy this)] (.attack this enemy) (.attack this enemy)) (let [enemy (.findNearestEnemy this)] (.attack this enemy) (.attack this enemy)) |
LUA:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
-- Ваш герой не знает имен своих врагов! -- Очки дают вам способность findNearestEnemy. local enemy = self:findNearestEnemy() self:attack(enemy) self:attack(enemy) local enemy = self:findNearestEnemy() self:attack(enemy) self:attack(enemy) local enemy = self:findNearestEnemy() self:attack(enemy) self:attack(enemy) |
self has no method attack
такая ошибка!
а какой язык?
вроде и phyton, и lua у меня компилится.
Но да, похоже в phyton всe self надо изменить на hero.