Бэквудский лес. Защита лесной тропы

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

# Используй флаги, чтобы присоединиться к битве или отступить.
# Если потерпел неудачу, жми Завершить ещё раз и пробуй опять с новыми случайными врагами.
# Тебе понадобится по крайней мере здоровье 300, если не больше.
while True:
    enemy = hero.findNearestEnemy()
    flag = hero.findFlag()
    if flag:
        # Подберите флаг.
        flagPos = flag.pos
        flagX = flag.pos.x
        flagY = flag.pos.y
        hero.moveXY(flagX, flagY)
        hero.pickUpFlag(flag)
        pass
    elif enemy:
        # Сражайся!
        distance = hero.distanceTo(enemy)
        if distance < 10:
            if hero.isReady("cleave"):
                hero.cleave(enemy)
    else: 
        hero.attack(enemy)
        pass
 

Как минимум в этом куске нужно поправить отступы, чтобы else соответствовал пункту, которому он всё-таки else.

Я то с этим согласен. Но герой не видит флаг в таком случае. Странно как то. А еще герой не атакует. не могу понять в чем причина?

А еще в последней строке пишет - ошибка указателя. Почему враг не определен не пойму.

Удалить эту часть. Кроме того, сделайте отступ для оператора else, ваш оператор else сравнивается с оператором if неприятель. Так и должно быть:

elif enemy:
        # Сражайся!
        distance = hero.distanceTo(enemy)
        if distance < 10:
            if hero.isReady("cleave"):
                hero.cleave(enemy)
            else: 
                hero.attack(enemy)
                pass

Так я тоже пробовал. Герой реагирует на флаг, но не атакует врага.

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

Конечно! Я флаг ставлю и заманиваю врагов в ловушку. Лучники атакуют, а герой стоит на месте. И после этого перестает реагировать на флаг. Может ли это быть глюком игры?

Не могли бы вы дать ссылку на уровень?

https://codecombat.com/play/level/hold-the-forest-pass? Я кое как выполнил условия задачи и решил ее. Но герой так и не атаковал врагов. Думаю это все таки был глюк игры.

Если у вас есть рейнджер, используйте рейнджера. В противном случае я предлагаю вам вынуть выступ. Заманивайте огров к прячущимся лучникам.

Я криво но решил задачу. Думаю код правильный или хотя бы логика верная. Я не знаю что такое рейнжер.

Это класс героев, если вы являетесь подписчиком, вы можете использовать Amara Arrowhead, Naria of the Leaf, Ritic the Cold или Senick Steelclaw.

Я понял. Буду иметь ввиду.

Или что-то не так в коде. Или экипировке (например, нет меча или мечасо способностью cleave)

Если всё верно написано и одето - должно работать. Как минимум - с простыми героями.

Думаю это был глюк игры, потому что герой видит флаг и идет к нему, но через некоторое время он перестает на него реагировать. Я кое как прошел уровень, глюки так и не исчезли. Благодаря хорошей броне герой выжил.

Понятно. А какой был код?

Тот же что я ранее указывал.

Ясно. Ну там было над чем поработать немного.

Отступы? Я пробовал разные варианты.