Ayuda en Kelvintaph Bulgler

Ayuda estoy 3 dias intentando superar este nivel aquí está mi código D:

excepE = ['tower']
dest = {'x': 78, 'y': 39}
done = False


def getPos(obj):
    return obj.pos.x, obj.pos.y


def toPos(x, y):
    return {'x': x, 'y': y}


def rushTo(xy):
    if hero.isReady("jump"):
        hero.jumpTo(xy)
    hero.move(xy)


def exclude(units, exceps):
    return [u for u in units if u.type not in exceps]


def farthest(enemies):
    farthestD = 0
    for enemy in enemies:
        d = hero.distanceTo(enemy)
        if d > farthestD and enemy.health > 0:
            farthestD = d
            farthest = enemy
    return farthest


def nearby(enemies, dis):
    return sum([hero.distanceTo(e) < dis for e in enemies])


def selfDying(self):
    if self.health < self.maxHealth / 2:
        hero.command(self, "move", {'x': self.pos.x - 1, 'y': self.pos.y})


def evade():
    x, y = getPos(hero)
    orbs = hero.findEnemyMissiles()
    if len(orbs):
        orb = hero.findNearest(orbs)
        if hero.distanceTo(orb) < 3:
            if y > 14:
                hero.moveXY(x, y - 7)
            else:
                hero.moveXY(x, y + 7)


def lowHP():
    friends = hero.findFriends()
    lowest = 9999
    dying = None
    if len(friends):
        for friend in friends:
            hp = friend.health
            if hp < friend.maxHealth / 3 and hp < lowest and hp > 0:
                lowest = hp
                dying = friend
    return dying


def soldierAtk(soldier):
    selfDying(soldier)
    enemies = hero.findByType("ogre")
    if not len(enemies):
        enemy = soldier.findNearestEnemy()
    else:
        enemy = enemies[0]
    if enemy:
        hero.command(soldier, "attack", enemy)
    else:
        hero.command(soldier, "move", soldier.pos)


def archerAtk(archer):
    enemies = hero.findByType("chieftain")
    if not len(enemies):
        enemy = archer.findNearestEnemy()
    else:
        enemy = enemies[0]
    if enemy and archer.pos.x > 53 and archer.pos.y < 40:
        hero.command(archer, "attack", enemy)
    elif hero.time > 6:
        hero.command(archer, "move", dest)


def riderAtk(rider):
    enemies = hero.findByType("robot-walker")
    if len(enemies):
        hero.command(rider, "move", {'x': enemies[0].pos.x / 2 + enemies[1].pos.x / 2,
                                     'y': enemies[0].pos.y / 2 + enemies[1].pos.y / 2})


def palaAtk(pala):
    selfDying(pala)
    dying = lowHP()
    enemies = hero.findByType("witch")
    if not len(enemies):
        enemy = pala.findNearestEnemy()
    else:
        enemy = enemies[0]
    if dying and pala.canCast('heal'):
        hero.command(pala, "cast", 'heal', dying)
    else:
        hero.command(pala, "move", dest)
    if pala.canCast('heal') and hero.health < 2 * hero.maxHealth / 3:
        hero.command(pala, "cast", 'heal', hero)
    if pala.pos == dest:
        hero.command(pala, "shield")


def summon(soldier):
    while hero.gold >= hero.costOf(soldier):
        hero.summon(soldier)


def command():
    for unit in hero.findFriends():
        t = unit.type
        if t == 'griffin-rider':
            riderAtk(unit)
        elif t == 'soldier':
            soldierAtk(unit)
        elif t == 'paladin':
            palaAtk(unit)
        elif t == 'archer':
            archerAtk(unit)


def atk():
    if hero.gold > hero.costOf('griffin-rider'):
        hero.summon('griffin-rider')
    command()
    
    enemies = hero.findByType("robot-walker")
    if len(enemies):
        pass
    else:
        enemy = hero.findNearest([e for e in hero.findEnemies() if e.type not in ['ice-yak', 'cow']])
        if enemy:
            command()
            if hero.canCast("chain-lightning", enemy) and hero.time > 7:
                hero.cast("chain-lightning", enemy)
        elif not len(enemies):
            hero.move({'x': 78, 'y': 14})
    return True


def run():
    while True:
        evade()
        atk()


run()

AYUDA RÁPIDO
GRACIAS

Mi heroe
Captura.PNG

This is the top of the level solution in internet
image
and this is the end:
image

Will someone try to “help” by really deleting the topic, not only by locking it?
P.S. The easiest wold is the Glacier. 70% pass it without coding at all ! :slight_smile:

1 Like

Well, I’m not sure that would help that much. A simple google search of “kelvintaph burgler solution” shows this code as the first result. Sometimes I do wish that repo didn’t exist… Ah well, I guess it’s up to coders to write their own code, and maybe deleting these kinds of topics on the CoCo offical forum would stop some people from finding this code.

@Ema-12, :es: Me temo que tendré que eliminar su código porque no lo ha escrito usted mismo. Es claramente de cierto lugar en Internet, que no mencionaré exactamente para que nadie más lo encuentre. Es una coincidencia exacta. Me encantaría ayudarte con tu propio código, o incluso pensar en una estrategia para este nivel (sé que es muy difícil), pero no te ayudaré con el código que escribió otra persona. Gracias Danny

:uk: I’m afraid I will have to remove your code because you haven’t written it yourself. It is clearly from a certain place on the internet, which I won’t mentione exactly so no-one else finds it. It is an exact match. I would love to help you with your own code, or even just thinking of a strategy for this level (I know it’s very hard), but I won’t help you with code that someone else wrote.
Thanks, Danny

Gracias, yo realmente no se como pasar este nivel por eso he buscado la solución en “internet” y pues tampoco iba entonces estoy pidiendo ayuda para arreglar el codigo y poder pasar se que realmente debería hacerlo yo porque estoy aprendiendo pero igualmente gracias @xython y @Deadpool198

Hola Bilingual Chat (Spanish and English)

Hola, que se supone que debes hacer exactamente? tal vez te pueda ayudar o dar ideas de como solucionarlo, saludos!