Испытание: Один Волшебник

Помогите, пожалуйста. Не могу понять, почему не использует сhain-lighting. И после того, как герой телепортируется для регенерации, не могу вернуть его на поле боя.

def shouldRun():
    if hero.health<hero.maxHealth/3:
        return True
    else:
        return False

def attackEnemy():
    enemys=hero.findEnemies()
    enemy=hero.findNearestEnemy()
    if enemy:
        distance = hero.distanceTo(enemy)
        if distance < 30:
            indexEnemy=0
            besideEnemy=0
            while indexEnemy<len(enemys):
                if hero.distanceTo(enemys[indexEnemy])<20:
                    besideEnemy+=1
                indexEnemy+=1
            enemy=hero.findNearest(enemys)
            
            if hero.canCast("drain-life", enemys) and besideEnemy>3:
                hero.cast("drain-life", enemys)
            #if hero.canCast("lighting-bolt", enemy):
            #   hero.cast("lighting-bolt", enemy)
            if besideEnemy>5 and hero.canCast("chain-lighting", enemys):
                hero.cast("chain-lighting", enemys)
            hero.attack(enemy)

while True:
    if shouldRun():
        hero.cast("regen", hero)
        hero.moveXY(32, 31)        
    else:
        attackEnemy()
1 Like

You can’t do drain life and welcome to the forum.

1 Like

Hello and welcome to codecombat discourse! This is a cozy forum where you can share ideas, share fan art, get assistance for code, etc! Before you proceed, we hope that you review this topic, which shows all essentials of this board! Thanks!

Ваш герой телепортируется, только если его здоровье равно единице. Это означает, что вы умираете, поэтому вам понадобится лучший код.
1 Like

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

1 Like

Спасибо). Да, уже поняла, что герой телепортируется не по моей воле). Код переписала, стало лучше, но пока не доработанный.

Спасибо за подсказку. Попробую переписать код в части регенерации.

while True:
    enemys=hero.findEnemies()
    enemy=hero.findNearestEnemy()
    item = hero.findNearestItem()
    if item=="shell":
        hero.moveXY(hero.pos.x, hero.pos.y-5)
    if enemy:
        distance = hero.distanceTo(enemy)
        if hero.distanceTo(enemy) < 30:
            indexEnemy=0
            besideEnemy=0
            while indexEnemy<len(enemys):
                if hero.distanceTo(enemys[indexEnemy])<30:
                    besideEnemy+=1
                indexEnemy+=1
        if besideEnemy>5 and enemy.type=="scout" and hero.canCast("chain-lightning", enemy):
            hero.cast("chain-lightning", enemy)
        if besideEnemy>5 and enemy.type=="munchkin" and hero.isReady("lightning-bolt", enemy):
            hero.cast("lightning-bolt", enemy)
        hero.attack(enemy)
        if hero.canCast("regen", hero) and hero.distanceTo(enemy)>15:
            hero.cast("regen", hero)

Переписала код, но опять застряла. Не могу сообразить, как увернуться от снаряда катапульты. Пробовала через тип врага и через тип предмета. Тип прописывала СНАРЯД, ОГНЕННЫЙ ШАР и КАТАПУЛЬТА. Может, кто-то сможет подсказать, как правильно обозвать)?

Тебе не нужно уворачиваться от снарядов. Проще убить катапульту, с помощью “lightning-bolt”.

1 Like

Спасибо за ответ). А как прописать? Не соображу, как оформить.

        if enemy.type=="catapult" and hero.canCast("lightning-bolt", enemy):
            hero.cast("lightning-bolt", enemy)

Попробовала так, но герой игнорирует команду и атакует простой атакой.

Отдайте приоритет уничтожению катапульты, поставив код первым

        if enemy.type=="catapult" and hero.canCast("lightning-bolt", enemy):
            hero.cast("lightning-bolt", enemy)

Затем замените все следующие if на elif и в качестве последнего условия поставьте else для простой атаки. Я закончил уровень в своем python аккаунт, взяв за основу ваш код.

Спасибо!

P.S. При первом решении уровня в javascript в основном профиле у меня была совершенно другая логика.

2 Likes

Большое спасибо за подсказку).Про приоритеты совсем не подумала. Очень приятно узнать, что мой код кому-то пригодился).

1 Like

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