Тема:
Базовый синтаксис
Аргументы
Циклы
Условные операторы
Переменные
Арифметика
Цели:
Уклонись от четырёх яков.
Руководство:
Введение:
Переместись вправо, пока не приблизишься к яку, а затем двигайся влево.
Для перемещения влево, вычитай из вашего pos.x.
Для перемещения вправо, прибавляй к вашему pos.x.
Описание:
На этом уровне вы получите доступ к собственной pos(позиция), для перемещения вас относительно того, где вы находитесь.
Если ближайший песчаный як находится менее, чем в десяти метрах, двигайтесь на десять метров влево (вычитайте из x-a вашей позиции), чтобы уклониться от него.
В противном случае, переместитесь на десять метров вправо (добавляйте к x координате вашей позиции), что бы стать ближе к оазису.
Подсказка: Используйте короткие перемещения, это позволит реагировать, на события, по пути к цели. Что очень полезно для реагирования на меняющиеся угрозы и получение новой информации, по пути к цели.
Оазис, прохождение:
Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# Иди вправо, чтобы достичь оазиса, # но отходи влево, чтобы избежать яков поблизости. loop: x = self.pos.x y = self.pos.y enemy = self.findNearestEnemy() if enemy and self.distanceTo(enemy) < 10: # Иди налево, вычитая 10 из своей X координаты. x-=10 self.moveXY(x, y) pass else: # Иди направо, прибавляя 10 к своей X координате. x+=10 self.moveXY(x, y) pass |
JavaScript:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
// Иди вправо, чтобы достичь оазиса, // но отходи влево, чтобы избежать яков поблизости. loop { var x = this.pos.x; var y = this.pos.y; var enemy = this.findNearestEnemy(); if (enemy && this.distanceTo(enemy) < 10) { // Иди налево, вычитая 10 из своей X координаты. x-=10; this.moveXY(x, y); } else { // Иди направо, прибавляя 10 к своей X координате. x+=10; this.moveXY(x, y); } } |
CoffeScript:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# Иди вправо, чтобы достичь оазиса, # но отходи влево, чтобы избежать яков поблизости. loop x = @pos.x y = @pos.y enemy = @findNearestEnemy() if enemy and @distanceTo(enemy) < 10 # Иди налево, вычитая 10 из своей X координаты. x-=10 @moveXY x, y # null else # Иди направо, прибавляя 10 к своей X координате. x+=10 @moveXY x, 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 |
;; Иди вправо, чтобы достичь оазиса, ;; но отходи влево, чтобы избежать яков поблизости. (dotimes [n 1000] (def x (.x (.pos this))) (def y (.y (.pos this))) (let [enemy (.findNearestEnemy this)] (if (< (.distanceTo this enemy) 10) (when true ;; Иди налево, вычитая 10 из своей X координаты. (.moveXY this (- x 10) y) ) (when true ;; Иди направо, прибавляя 10 к своей X координате. (.moveXY this (+ x 10) y) )))) |
LUA:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
-- Иди вправо, чтобы достичь оазиса, -- но отходи влево, чтобы избежать яков поблизости. loop local x = self.pos.x local y = self.pos.y local enemy = self:findNearestEnemy() if (enemy and (self:distanceTo(enemy) < 10)) then -- Иди налево, вычитая 10 из своей X координаты. x=x-10 self:moveXY(x, y) else -- Иди направо, прибавляя 10 к своей X координате. x=x+10 self:moveXY(x, y) end end |
Комментарии: