Тема:
Аргументы
Циклы
Переменные
Литералы объектов
Функции
Циклы «for»
Цели:
Собери все монеты.
Люди должны выжить.
Совет 1:
На этом уровне герою необходимо будет отфильтровать монеты, так чтобы не было никакой путаницы среди крестьян!
Фильтрация это процесс сохранения или удаления определенных элементов. В частности, на этом уровне, герой должен от фильтровать каждую из монет в нужный массив, чтобы передать его соответствующему крестьянину.
Другой способ сделать то, что демонстрируется на уровне выглядит следующим образом:
Phyton:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# Берём массив с большим количеством элементов: enemies = hero.findEnemies() # Инициализируем новый массив, что бы поместить туда нужный тип объектов. throwers = [] # Перебираем все элементы нашего исходного массива. for i in range(len(enemies)): enemy = enemies[i] # Проверяем, соответствует ли элемент нашему условию if enemy.type == "thrower": # Если это так, добавляем его в массив выборки throwers.push(enemy) # Теперь у нас есть массив всех метателей("thrower")! throwers |
JavaScript:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// Берём массив с большим количеством элементов: var enemies = hero.findEnemies(); // Инициализируем новый массив, что бы поместить туда нужный тип объектов. var throwers = []; // Перебираем все элементы нашего исходного массива. for(var i = 0; i < enemies.length; i++) { enemy = enemies[i]; // Проверяем, соответствует ли элемент нашему условию if(enemy.type == "thrower") { // Если это так, добавляем его в массив выборки throwers.push(enemy); } } // Теперь у нас есть массив всех метателей("thrower")! throwers; |
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 28 29 30 31 32 33 34 35 36 |
# Соберите все монетки! # Крестьяне не могут добыть монетки из других областей. # Тем не менее, в каждой области появляется монеты только определенной ценности! # Фильтруйте совершенно все items и отдавайте соответственные команды крестьянам. def commandPeasant(peasant, coins): # Отдавайте команды крестьянам, что бы они нашли ближайшую монетку из своего массива. if coins[0]: coin=peasant.findNearest(coins) hero.command(peasant, "move", coin.pos) friends = hero.findFriends() peasants = { "Aurum": friends[0], "Argentum": friends[1], "Cuprum": friends[2] } while True: items = hero.findItems() goldCoins = [] silverCoins = [] bronzeCoins = [] for i in range(len(items)): item = items[i] if item.value == 3: goldCoins.push(item) # Добавьте бронзовые и серебрянные монетки в соответствующий массив: if item.value == 2: silverCoins.push(item) if item.value == 1: bronzeCoins.push(item) commandPeasant(peasants.Aurum, goldCoins) commandPeasant(peasants.Argentum, silverCoins) commandPeasant(peasants.Cuprum, bronzeCoins) |
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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
// Соберите все монетки! // Крестьяне не могут добыть монетки из других областей. // Тем не менее, в каждой области появляется монеты только определенной ценности! // Фильтруйте совершенно все items и отдавайте соответственные команды крестьянам. function commandPeasant(peasant, coins) { // Отдавайте команды крестьянам, что бы они нашли ближайшую монетку из своего массива. if (coins[0]) { var coin = peasant.findNearest(coins); hero.command(peasant, "move", coin.pos); } } var friends = hero.findFriends(); var peasants = { "Aurum":friends[0], "Argentum":friends[1], "Cuprum":friends[2] }; while(true) { var items = hero.findItems(); var goldCoins = []; var silverCoins = []; var bronzeCoins = []; for(var i = 0; i < items.length; i++) { var item = items[i]; if(item.value == 3) { goldCoins.push(item); } // Добавьте бронзовые и серебрянные монетки в соответствующий массив: if(item.value == 2) { silverCoins.push(item); } if(item.value == 1) { bronzeCoins.push(item); } } commandPeasant(peasants.Aurum, goldCoins); commandPeasant(peasants.Argentum, silverCoins); commandPeasant(peasants.Cuprum, bronzeCoins); } |
CoffeScript:
1 |
# |
Clojure:
1 |
;; |
LUA:
1 |
-- |
Комментарии: