# Эта функция позволяет сражаться до определенного времени
# и сообщите о побежденных врагах.
def fightAndReport(untilTime):
defeated = 0
while True:
enemy = hero.findNearestEnemy()
if enemy:
hero.attack(enemy)
if enemy.health <= 0:
defeated += 1
if hero.time > untilTime:
break
hero.moveXY(59, 33)
hero.say(defeated)
# Сражайтесь 15 секунд и скажите Нарии, сколько врагов вы победили.
fightAndReport(15)
# Собирайте монеты, пока часы не достигнут 30 секунд.
coin = hero.findNearestItem()
time = 0
if coin:
hero.moveXY(coin.pos.x, coin.pos.y)
if hero.time >= 30:
time += 1
# Скажите Нарии, сколько золота вы собрали.
hero.say(hero.gold)
# Сражайтесь с врагами до тех пор, пока часы не достигнут 45 секунд.
fightAndReport(45)
Используйте цикл while, проверяя, находится ли время вашего героя выше 15 и ниже 30. Затем найдите ближайший элемент и переместитесь на его позицию. Затем (вне цикла while) перейдите к перекрестным костям и скажите золото вашего героя.
У вас не должно быть нигде истинного цикла while, на этом уровне используются циклы while, поэтому, пока время героя меньше 15, он будет атаковать врагов, а затем через 15 секунд он будет собирать монеты, пока время не станет 30, после этого он будет атаковать до 45 часов.
# Эта функция позволяет сражаться до определенного времени
# и сообщите о побежденных врагах.
def fightAndReport(untilTime):
defeated = 0
while True:
enemy = hero.findNearestEnemy()
if enemy:
hero.attack(enemy)
if enemy.health <= 0:
defeated += 1
if hero.time > untilTime:
break
hero.moveXY(59, 33)
hero.say(defeated)
# Сражайтесь 15 секунд и скажите Нарии, сколько врагов вы победили.
fightAndReport(15)
# Собирайте монеты, пока часы не достигнут 30 секунд.
coin = hero.findNearestItem()
time = 0
if coin:
hero.moveXY(coin.pos.x, coin.pos.y)
while hero.time>15 and hero.time<30:
time += 1
# Скажите Нарии, сколько золота вы собрали.
hero.say(hero.gold)
# Сражайтесь с врагами до тех пор, пока часы не достигнут 45 секунд.
fightAndReport(45)
Замените все это только оператором while. После замены кода внутри цикла while найдите ближайший элемент и переместитесь к его положению, если он существует.
while hero.time>15 and hero.time<30:
variable = hero.findNearestItem()
#assign the variable
if variable:
#check if the variable exists
hero.moveXY(variable.pos.x,variable.pos.y)
#move to the variable's position
Я должен обозначить 30 сек, что бы герой закончил собирать монеты и сообщил их количество Нарии. Но как мне прописать? Hero.time >=30: ? И потом, время должно вести отсчет от 0, это так же надо обозначить time = 0 ? Или как иначе код прописать правильно? У меня именно этот момент не получается продумать.