Помогите с прохождением. Как мне кажется я все делаю логически правильно, но код не работает.
# Поле с монетами усеяно флаконами со смертельным ядом.
# Огры нападают, а в это время их батраки пытаются украсть твои монеты!
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
Как именно он не работает? Герой ничего не делает, или герой атакует всех подряд врагов, или атакует всех кроме пеонов, но не собирает предметы; и т.д.
Вам все это не нужно, вы можете просто сделать 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
А ведь у меня была такая мысль. Мне попадались уровни где нужна была только одна эта строка. Но позже опять нужно было все прописывать. В чем разница? Объясните пожалуйста.
В других вариантах я могу использовать только одну строку? Или бывают случаи когда нужно прописывать все подробно? Я конкретно о прохождении. Понимаю что в жизни надо пользоваться более простым и коротким кодом.
Насколько я знаю, они позволяют делать и то, и другое. Но я думаю, что они учат вас более простому способу.
Пожалуйста, поправьте меня, если я ошибаюсь
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
Возникла еще одна проблема. Вроде бы все верно , но возникает какая то ошибка, что цель не определена. Как такое может быть? Я же ее указал.
# Не атакуй бурлов!
# Функция может возвращать значение.
# Результатом вызова функции станет число, которое она вернула.
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)
Это был уровень Роща больших Бурлов в локации Блэквудский лес. У меня была опечатка, логически задача была решена, но написал false c маленькой буквы. На данный момент прошел задачу Логический круг. Приходит понятие что осознаю что делаю, понимаю решение и для чего это нужно. Чувствую что в голове есть мозг Пока маленькая победа, но эмоции положительные. Я понимаю!