Тема:
Аргументы
Переменные
Строки
Циклы
Условные операторы
Арифметика
Цели:
Доберитесь до оазиса.
Руководство:
Введение:
Стройте заборы, что бы блокировать яков. Яки приходят случайным образом сверху или снизу. Идите к оазису, если вы не видите яков.
Когда же вы видете яка, сравните его pos.y с pos.y вашего героя.
Если она больше у яка, як над вами. В противном случае он ниже вас.
Анализ:
Песчаные яки с верху и с низу. Вы будете иметь возможность сравнить из позицию со своей, что бы определить строить забор в верху или внизу.
Если pos.y у яка больше, чем у вас, строить надо ниже яка. В противном случае, строить надо над яком.
Подсказка: Используйте оператор больше чем «>» на свойство позиции яка.
Подсказка: Помните, что надо использовать buildXY что бы построить «fence»(забор).
Гром Копыт, прохождение:
Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# Доберись до оазиса, # закрывая по пути проходы с яками. loop: yak = self.findNearestEnemy() if yak: # Як над тобой если его y-координата больше твоей. if yak.pos.y>self.pos.y: # Если як над тобой, стой стену на 10 м ниже него. self.buildXY("fence", yak.pos.x, yak.pos.y-10) else: # Если як под тобой, стой стену на 10 м выше него. self.buildXY("fence", yak.pos.x, yak.pos.y+10) #pass else: # Двигайся вправо к оазису, проходя 10 м. за ход. self.moveXY(self.pos.x+10, self.pos.y) #pass |
JavaScript:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
// Доберись до оазиса, // закрывая по пути проходы с яками. loop { var yak = this.findNearestEnemy(); if (yak) { // Як над тобой если его y-координата больше твоей. if (yak.pos.y>this.pos.y){ // Если як над тобой, стой стену на 10 м ниже него. this.buildXY("fence", yak.pos.x, yak.pos.y-10); } else { // Если як под тобой, стой стену на 10 м выше него. this.buildXY("fence", yak.pos.x, yak.pos.y+10); } } else { // Двигайся вправо к оазису, проходя 10 м. за ход. this.moveXY(this.pos.x+10, this.pos.y); } } |
CoffeScript:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# Доберись до оазиса, # закрывая по пути проходы с яками. loop yak = @findNearestEnemy() if yak # Як над тобой если его y-координата больше твоей. if yak.pos.y>@pos.y # Если як над тобой, стой стену на 10 м ниже него. @buildXY "fence", yak.pos.x, yak.pos.y-10 else # Если як под тобой, стой стену на 10 м выше него. @buildXY "fence", yak.pos.x, yak.pos.y+10 #null else # Двигайся вправо к оазису, проходя 10 м. за ход. @moveXY @pos.x+10, @pos.y #null #@say "Delete this line when your loop is finite." |
Clojure:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
;; Доберись до оазиса, ;; закрывая по пути проходы с яками. (dotimes [n 1000] (let [yak (.findNearestEnemy this)] (if yak (when true ;; Як над тобой если его y-координата больше твоей. (if (> (.y (.pos yak)) (.x (.pos this))) ;; Если як над тобой, стой стену на 10 м ниже него. (.buildXY this "fence" (.x (.pos yak)) (- (.y (.pos yak)) 10)) ;; Если як под тобой, стой стену на 10 м выше него. (.buildXY this "fence" (.x (.pos yak)) (+ (.y (.pos yak)) 10)) ) ) (when true ;; Двигайся вправо к оазису, проходя 10 м. за ход. (.moveXY this (+ (.x (.pos this)) 10) (.y (.pos this))) )))) |
LUA:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
-- Доберись до оазиса, -- закрывая по пути проходы с яками. loop local yak = self:findNearestEnemy() if yak then -- Як над тобой если его y-координата больше твоей. if yak.pos.y > self.pos.y then -- Если як над тобой, стой стену на 10 м ниже него. self:buildXY("fence", yak.pos.x, yak.pos.y-10) else -- Если як под тобой, стой стену на 10 м выше него. self:buildXY("fence", yak.pos.x, yak.pos.y+10) end else -- Двигайся вправо к оазису, проходя 10 м. за ход. self:moveXY(self.pos.x+10, self.pos.y) end end |
Комментарии: