Тема:
Базовый синтаксис
Аргументы
Циклы
Условные операторы
Переменные
Цели:
Победи огров.
Человек должен уцелеть.
Руководство:
Информация
Если враг приблизиться к вам, нападите на него! Иначе идите к X, чтобы оставаться около крестьянина.
Помните, что вы можете найти расстояние с помощью:
1 |
local distance = self.distanceTo(enemy) |
JavaScript:
1 |
var distance = this.distanceTo(enemy); |
CoffeScript:
1 |
distance = @distanceTo(enemy) |
Clojure:
1 |
(def distance (.distanceTo this enemy)) |
LUA:
1 |
local distance = self:distanceTo(enemy) |
Анализ
Вы можете использовать метод distanceTo, чтобы измерить расстояние, в метрах, к цели. На этом уровне, вы будете использовать данный метод, чтобы убедиться, что вы остаетесь близко к крестьянину Виктору.
Вы можете увидеть новый кусок синтаксиса, «меньше, чем» оператор: <
Можно прочитать это следующим образом: если расстояние составляет менее 10 метров, атаковать противника, иначе двигаться назад к маркеру X .
Допишите else, чтобы вернуться к маркеру X, и людоеды не смогут добраться до Виктора, пока вы далеко.
Совет: убедитесь, что вы занимаете правильную оборонительную позицию, Х находится в координатах {х: 40, у: 37}.
Награда:
Защити фермера, прохождение:
Python:
1 2 3 4 5 6 7 8 9 |
loop: enemy = self.findNearestEnemy() distance = self.distanceTo(enemy) if distance < 10: # Атакуй их, когда они окажутся рядом с фермером. self.attack(enemy) else: self.moveXY(40, 37) # Иначе стой рядом с Виктором! Используй else. |
JavaScript:
1 2 3 4 5 6 7 8 9 10 11 12 |
loop { var enemy = this.findNearestEnemy(); var distance = this.distanceTo(enemy); if (distance < 10) { // Атакуй их, когда они окажутся рядом с фермером. this.attack(enemy); } else { this.moveXY(40, 37); } // Иначе стой рядом с Виктором! Используй else. } |
CoffeScript:
1 2 3 4 5 6 7 8 9 10 |
loop #@say "Delete this when your loop isn't infinite." enemy = @findNearestEnemy() distance = @distanceTo enemy if distance < 10 # Атакуй их, когда они окажутся рядом с фермером. @attack enemy else @moveXY 40, 37 # Иначе стой рядом с Виктором! Используй else. |
Clojure:
1 2 3 4 5 6 7 8 9 |
(dotimes [n 1000] (def enemy (.findNearestEnemy this)) (def distance (.distanceTo this enemy)) (if (< distance 10) ;; <%= attack_if_close (.attack this enemy) (.moveXY this 40 37) ) ;; <%= else_stay_close %> |
LUA:
1 2 3 4 5 6 7 8 9 10 11 12 |
loop local enemy = self:findNearestEnemy() local distance = self:distanceTo(enemy) if distance < 10 then -- Атакуй их, когда они окажутся рядом с фермером. self:attack(enemy) else self:moveXY(40, 37) end -- Иначе стой рядом с Виктором! Используй else. end |
Комментарии: