Тема:
Базовый синтаксис
Условные операторы
Аргументы
Циклы
Переменные
Цели:
Победи огров.
Человек должен уцелеть.
Руководство:
Введение
Вы можете вкладывать условные опреаторы if друг в друга чтобы делать выбор из многих вариантов.
Общие сведения:
Эта ситуация может напомнить Вам один из предыдущих уровней, Танцы с огнём, но в этом уровне, Вам нужно уклоняться от двухогненных шаров одновременно! Кроме того, огненные шары летят хаотично, так что Вам не поможет перемещение вправо и влево в цикле. Логика принятия решения где Вы можете быть в безопасности немного запутанная:
- Если видите жемчужину на карте, бегите от неё в другую сторону;
- Если жемчужины нет, идите в центр.
Вложенные условные операторы
Для того чтобы Ваша стратегия заработала, Вам нужно воспользоваться вложенными условными операторами if. Там где Вы помещаете условный оператор if внутри другого условного оператора if чтобы сделать возможным выбор внутри выбора. (Yo dawg…)
Обратите внимание что вложенный условный оператор if пишется с дополнительным отступом показывающим что он внутри первого условного оператора. Таким образом с помощью дополнительных отступов мы показываем что левая и правая ветви условия находятся во внутреннем условном операторе if, тогда как центральная ветвь — это часть внешнего условного оператора if.
Местоположение
Каждый предмет (и каждый юнит) имеет свойство pos, который указывает его местоположение. В свою очередь само свойство pos тоже является объектом, который имеет свойства x и y которые могут быть использованы в командах moveXY и buildXY.
В коде по умолчанию для этого уровня, мы присвоили переменной pos значение evilstone.pos для Вас, но на следующих уровнях Вы ещё неоднократно встретитесь с этим свойством.
Роща танцующего пламени, прохождение:
Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#Злой Камень на этом уровне - это зло! Спасайтесь от него убегая в противоположную сторону. while True: evilstone = self.findNearestItem() if evilstone: pos = evilstone.pos if pos.x == 34: # Если Злой Камень слева - бегите вправо. self.moveXY(46, 22) pass else: # Если Злой Камень справа - бегите влево. self.moveXY(34, 22) pass else: # Если Злого Камня нет - бегите на середину. self.moveXY(40, 22) pass |
JavaScript:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
//Злой Камень на этом уровне - это зло! Спасайтесь от него убегая в противоположную сторону. while (true) { evilstone = this.findNearestItem(); if (evilstone) { pos = evilstone.pos; if (pos.x == 34) { // Если Злой Камень слева - бегите вправо. this.moveXY(46, 22); } else { // Если Злой Камень справа - бегите влево. this.moveXY(34, 22); } } else { // Если Злого Камня нет - бегите на середину. this.moveXY(40, 22); } } |
CoffeScript:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#Злой Камень на этом уровне - это зло! Спасайтесь от него убегая в противоположную сторону. while true evilstone = @findNearestItem() if evilstone pos = evilstone.pos if pos.x == 34 # Если Злой Камень слева - бегите вправо. @moveXY 46, 22 #@say "I should move to the right!" else # Если Злой Камень справа - бегите влево. @moveXY 34, 22 #@say "I should move to the left!" else # Если Злого Камня нет - бегите на середину. @moveXY 40, 22 #@say "I should move to the middle!" |
Clojure:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
;; //Злой Камень на этом уровне - это зло! Спасайтесь от него убегая в противоположную сторону. (dotimes [n 1000] (let [evilstone (.findNearestItem this)] (if evilstone (if (= (.x (.pos evilstone)) 34) ;;nil ;; ∆ Если Злой Камень слева - бегите вправо. (.moveXY this 46 22) ;;nil ;; ∆ Если Злой Камень справа - бегите влево. (.moveXY this 34 22) ) ;;nil ;; ∆ Если Злого Камня нет - бегите на середину. (.moveXY this 40 22) ) ) ) |
LUA:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
-- Злой Камень на этом уровне - это зло! Спасайтесь от него убегая в противоположную сторону. loop local evilstone = self:findNearestItem() if evilstone then pos = evilstone.pos if pos.x == 34 then -- Если Злой Камень слева - бегите вправо. self:moveXY(46, 22) else -- Если Злой Камень справа - бегите влево. self:moveXY(34, 22) end else -- Если Злого Камня нет - бегите на середину. self:moveXY(40, 22) end end |
Комментарии: