Бэквудский лес. Полезные конкуренты

Помогите с прохождением. Как мне кажется я все делаю логически правильно, но код не работает.

# Поле с монетами усеяно флаконами со смертельным ядом.
# Огры нападают, а в это время их батраки пытаются украсть твои монеты!

while True:
    enemy = hero.findNearestEnemy()
    if enemy:
        # Атакуй врагов, если их тип (`type`)  не равен "peon".
        if enemy.type != "peon":
            hero.attack(enemy)
    item = hero.findNearestItem()
    if item:
        # Собери предмет, если его тип (`type`) не равен "poison".
        if item.type != "poison":
                itemPosition = item.pos
                itemX = itemPosition.x
                itemY = itemPosition.Y
                hero.moveXY(itemX, itemY)
        pass
 

here try doing this hero.moveXY(item.pos.x, item.pos.y)

Как именно он не работает? Герой ничего не делает, или герой атакует всех подряд врагов, или атакует всех кроме пеонов, но не собирает предметы; и т.д.

Вам все это не нужно, вы можете просто сделать hero.moveXY(item.pos.x, item.pos.y)
You don’ t need all of this, you can just do hero.moveXY(item.pos.x, item.pos.y)
Lydia

1 Like

А ведь у меня была такая мысль. Мне попадались уровни где нужна была только одна эта строка. Но позже опять нужно было все прописывать. В чем разница? Объясните пожалуйста.

Спасибо. Мне уже помогли. Герой просто стоял на месте. Нужна была одна строка.

То есть, я не очень понимаю, но так проще и проще
I mean, I don’t really understand it, but it is more easier and simple
Lydia

В других вариантах я могу использовать только одну строку? Или бывают случаи когда нужно прописывать все подробно? Я конкретно о прохождении. Понимаю что в жизни надо пользоваться более простым и коротким кодом.

Насколько я знаю, они позволяют делать и то, и другое. Но я думаю, что они учат вас более простому способу.
Пожалуйста, поправьте меня, если я ошибаюсь

As far as I know, they allow you to do both. But I think they teach you the simpler way.
Please correct me if I’m wrong
Lydia

1 Like

Я буду иметь ввиду на будущее. Еще раз спасибо за помощь.

1 Like

Возникла еще одна проблема. Вроде бы все верно , но возникает какая то ошибка, что цель не определена. Как такое может быть? Я же ее указал.

# Не атакуй бурлов!
# Функция может возвращать значение.
# Результатом вызова функции станет число, которое она вернула.

def shouldAttack(target):
    # return False Если нет цели
    if not target:
        return false
    # return False Если видишь бурла
    if target.type == "burl":
        return false
    else:
    # Иначе, return True
        return True

while True:
    enemy = hero.findNearestEnemy()
    # Используй функцию `shouldAttack()`, чтобы принять решение об атаке!
    # Переменной `heroShouldAttack` будет присвоено значение, которое вернула функция `shouldAttack()`!
    heroShouldAttack = shouldAttack(enemy)
    if heroShouldAttack:
        hero.attack(enemy)
 

Какой это уровень?
Lydia

Это был уровень Роща больших Бурлов в локации Блэквудский лес. У меня была опечатка, логически задача была решена, но написал false c маленькой буквы. На данный момент прошел задачу Логический круг. Приходит понятие что осознаю что делаю, понимаю решение и для чего это нужно. Чувствую что в голове есть мозг :slight_smile: Пока маленькая победа, но эмоции положительные. Я понимаю! :grinning_face_with_smiling_eyes:

Тогда Поздравляю !!
Lydia

1 Like

This topic was automatically closed 12 hours after the last reply. New replies are no longer allowed.