Тема:
Циклы
Условные операторы
Переменные
Строки
Арифметика
Оператор «break»
Цели:
Построить ровно 4 приманки.
Сообщить сколько приманок построено.
Руководство:
Вступление:
Используйте ваше золото. Когда вы собирёте 25 золотых, вы сможете построить decoy (приманку).
Python:
1 2 |
if self.gold >= 25: self.buildXY("decoy", x, y) |
JavaScript:
1 2 3 |
if(this.gold >= 25) { this.buildXY("decoy", x, y) } |
CoffeScript:
1 2 |
if @gold >= 25 @buildXY("decoy", x, y) |
Clojure:
1 2 3 |
(when (>= (.gold this) 25) (.buildXY this "decoy" x y) ) |
LUA:
1 2 3 |
if self.gold >= 25 then self:buildXY("decoy", x, y) end |
Описание:
Внутри цикла loop Вам нужно реализовать три вещи:
- Собрать монеты.
- Если параметр self.gold больше или равен 25, нужно построить ( buildXY) приманку и увеличить счетчик decoysBuilt на 1
- Если счетчик decoysBuilt имеет значение больше или равно 4, тогда разрываем цикл — break
Потом, после окончания (разрыва) loop цикла, вам следует переместиться ( moveXY) в точку, помеченную Х и сказать Нарье при помощи say как много приманом было сделано — decoysBuilt
Подсказка: Стройте свои приманки ( buildXY) на координатах x self.pos.x - 5 и y self.pos.y. Таким образом приманки будут отправляться влево, к Нарье.
От себя:
На этом уровне вас заставят купить деревянный молот строителя за 81 .
Награда:
Упражнения с приманкой, прохождение:
Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# Проводим полевые испытания нового возводимого объекта - приманки. # Постройте 4 приманки и сообщите их количество Нарье. decoysBuilt = 0 loop: coin = self.findNearestItem() if coin: # Loot the coin! self.moveXY(coin.pos.x, coin.pos.y) # pass # Каждая приманка стоит 25 золотых. Используйте Quartz Sense Stone # чтобы узнать когда наберёте больше 25 золотых self.gold if self.gold>=25: self.buildXY("decoy", self.pos.x-4, self.pos.y) decoysBuilt +=1 # Считайте количество уже построенных приманок. if decoysBuilt == 4: # Прерывайте цикл когда построите 4. break # pass self.say("Приманки построены!") self.moveXY(14, 36) # Идите к Нарье и сообщите сколько приманок построено. self.say(decoysBuilt) |
JavaScript:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
// Проводим полевые испытания нового возводимого объекта - приманки. // Постройте 4 приманки и сообщите их количество Нарье. var decoysBuilt = 0; loop { var coin = this.findNearestItem(); if(coin) { // Loot the coin! this.moveXY(coin.pos.x, coin.pos.y); } // Каждая приманка стоит 25 золотых. Используйте Quartz Sense Stone // чтобы узнать когда наберёте больше 25 золотых this.gold if (this.gold>25){ this.buildXY("decoy", this.pos.x-4, this.pos.y); decoysBuilt +=1; } // Считайте количество уже построенных приманок. if(decoysBuilt == 4) { // Прерывайте цикл когда построите 4. break; } } this.say("Приманки построены!"); this.moveXY(14, 36); // Идите к Нарье и сообщите сколько приманок построено. this.say(decoysBuilt); |
CoffeScript:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# Проводим полевые испытания нового возводимого объекта - приманки. # Постройте 4 приманки и сообщите их количество Нарье. decoysBuilt = 0 loop coin = @findNearestItem() if coin # Loot the coin! #@say("I should grab the coins.") @moveXY coin.pos.x, coin.pos.y # Каждая приманка стоит 25 золотых. Используйте Quartz Sense Stone # чтобы узнать когда наберёте больше 25 золотых @gold if @gold>=25 @buildXY "decoy", @pos.x-4, @pos.y decoysBuilt += 1 # Считайте количество уже построенных приманок. # Прерывайте цикл когда построите 4. if decoysBuilt == 4 break #@say "I should build decoys when I have 25 gold." @say "Приманки построены!" @moveXY(14, 36) # Идите к Нарье и сообщите сколько приманок построено. @say decoysBuilt |
Clojure:
Повторюсь break в clojure нет. я реализовал переменную break равную нулю, и пока она равна нулю цикл идёт. Когда надо прервать цикл я назначаю ей значение 1, и цикл прерывает свою работу.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
;; Проводим полевые испытания нового возводимого объекта - приманки. ;; Постройте 4 приманки и сообщите их количество Нарье. (def decoysBuilt 0) (def break 0) (while (= break 0) (def coin (.findNearestItem this)) (when coin (.moveXY this (.x (.pos coin)) (.y (.pos coin))) ) ;;Каждая приманка стоит 25 золотых. Используйте Quartz Sense Stone ;; чтобы узнать когда наберёте больше 25 золотых self.gold (when (>= (.gold this) 25) (.buildXY this "decoy" (- (.x (.pos this)) 4) (.y (.pos this))) (def decoysBuilt (inc decoysBuilt)) ;; Считайте количество уже построенных приманок. ) (when (= decoysBuilt 4) ;; Прерывайте цикл когда построите 4. (def break 1) ) ) (.say this "Приманки построены!") (.moveXY this 14 36) ;; Идите к Нарье и сообщите сколько приманок построено. (.say this decoysBuilt) |
LUA:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
-- Проводим полевые испытания нового возводимого объекта - приманки. -- Постройте 4 приманки и сообщите их количество Нарье. local decoysBuilt = 0 loop local coin = self:findNearestItem() if coin then -- Loot the coin! self:moveXY(coin.pos.x, coin.pos.y) end -- Каждая приманка стоит 25 золотых. Используйте Quartz Sense Stone -- чтобы узнать когда наберёте больше 25 золотых self.gold if self.gold>=25 then self:buildXY("decoy", self.pos.x-4, self.pos.y) decoysBuilt =decoysBuilt+1 end -- Считайте количество уже построенных приманок. if decoysBuilt == 4 then -- Прерывайте цикл когда построите 4. break --pass end end self:say("Приманки построены!") self:moveXY(14, 36) -- Идите к Нарье и сообщите сколько приманок построено. self:say(decoysBuilt) |
Комментарии: