Тема:
Базовый синтаксис
Циклы
Переменные
Цели:
Ваш герой должен выжить.
Уничтожьте огров.
Пройдите лабиринт.
Бонус за краткость кода: меньше 12 строк.
Собери самоцветы.
Руководство:
Введение:
Описание:
Этот уровень сочетает в себе while-true циклы и переменные. Ты должен найти выход из лабиринта и победить врагов.
Теперь ты видишь, почему тебе нужно использовать переменные? Потому что на самом деле ты собираешся изменять данные в переменной. Внутри твоего while-true цикла, ты определишь enemy переменную, она будет содержать имя одного из трех огров Жевунов на уровне, и цикл повторится. Круто, да?
Обратите внимание на то, где ваш while-true цикл должен повторяться, так что бы вы не двигаться дальше, чем вам это нужно.
Убедитесь, что вы вызываете findNearestEnemy (), когда между вами и людоедом манчкином есть прямая видимость.
Финальный лабиринт Kith`a, прохождение:
Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# Используй цикл "loop" для передвижения и атаки. while True: self.moveRight() self.moveUp() enemy = self.findNearestEnemy() self.attack(enemy) self.attack(enemy) self.moveRight() self.moveDown(2) self.moveUp() |
JavaScript:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// Используй цикл "loop" для передвижения и атаки. while(true) { this.moveRight(); this.moveUp(); var enemy = this.findNearestEnemy(); this.attack(enemy); this.attack(enemy); this.moveRight(); this.moveDown(2); this.moveUp(); } |
CoffeScript:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# Используй цикл "loop" для передвижения и атаки. while true @moveRight() @moveUp() enemy = @findNearestEnemy() @attack enemy @attack enemy @moveRight() @moveDown(2) @moveUp() |
Clojure:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
;; Используй цикл "loop" для передвижения и атаки. (while true (.moveRight this) (.moveUp this) (let [enemy (.findNearestEnemy this)] (.attack this enemy) (.attack this enemy)) (.moveRight this) (.moveDown this 2) (.moveUp this)) |
LUA:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
-- Используй цикл "loop" для передвижения и атаки. while true do self:moveRight() self:moveUp() local enemy = self:findNearestEnemy() self:attack(enemy) self:attack(enemy) self:moveRight() self:moveDown(2) self:moveUp() end |
Есть ещё одно решение. Если вам не нравиться сражаться с маленькими и без защитными людоедами, то можете их не атаковать. Воспользуйтесь ловушками лабиринта для уничтожения оргов, для этого просто пройдите по лабиринту:
Python:
1 2 3 4 5 6 7 8 |
# Используй цикл "loop" для передвижения и атаки. while True: self.moveRight() self.moveUp() self.moveRight() self.moveDown(2) self.moveUp() |
JavaScript:
1 2 3 4 5 6 7 8 9 |
// Используй цикл "loop" для передвижения и атаки. while(true) { this.moveRight(); this.moveUp(); this.moveRight(); this.moveDown(2); this.moveUp(); } |
CoffeScript:
1 2 3 4 5 6 7 8 |
# Используй цикл "loop" для передвижения и атаки. while true @moveRight() @moveUp() @moveRight() @moveDown(2) @moveUp() |
Clojure:
1 2 3 4 5 6 7 8 |
;; Используй цикл "loop" для передвижения и атаки. (while true (.moveRight this) (.moveUp this) (.moveRight this) (.moveDown this 2) (.moveUp this)) |
LUA:
1 2 3 4 5 6 7 8 9 |
-- Используй цикл "loop" для передвижения и атаки. while true do self:moveRight() self:moveUp() self:moveRight() self:moveDown(2) self:moveUp() end |
Комментарии: