codecombat kelvintaph-defiler

建议用战士

step = 0

def choiseTarget(enemies):

    hero.say(enemies)

    for enemy in enemies:

        for att in attack:

            if att[0] == enemy.pos.x and att[1] == enemy.pos.y:

                return enemy

            return None

            

def commandTroops():

    for index, friend in enumerate(hero.findFriends()):

        if (step == 0 and friend.pos.y > 60 and (friend.type != 'archer' or hero.now() > 3.6)):

            enemy = friend.findNearestEnemy()

            if enemy:

                hero.command(friend, "attack", enemy)

        elif step == 4:

            hero.command(friend, "move", {'x': 42, 'y': 67})

        elif friend.type == 'archer':

            CommandArcher(friend)

        elif friend.type == 'paladin':

            CommandPaladin(friend)

        else:

            CommandSoldier(friend)

            

def CommandPaladin(soldier):

    if step < 4:

        if (soldier.canCast("heal") and hero.now() > 3.0):

            hero.command(soldier, "cast", "heal", soldier)

        elif hero.now() > 2.8 and soldier.health < soldier.maxHealth * 0.7:

            hero.command(soldier, "shield")

            

def CommandSoldier(soldier):

    if step < 4:

        if soldier.pos.x < 74:

            hero.command(soldier, "move", {'x': 76, 'y': 76})

        else:

            enemy = soldier.findNearestEnemy()

            if enemy:

                hero.command(soldier, "attack", enemy)

                

def CommandArcher(soldier):

    if step == 1:

        if soldier.pos.y > 60:

            hero.command(soldier, "move", {'x': 22, 'y': 55})

        else:

            enemies = soldier.findEnemies()

            for enemy in enemies:

                if enemy.type != 'yeti':

                    hero.command(soldier, "attack", enemy)

    elif step == 2:

        if soldier.pos.x > 14:

            hero.command(soldier, "move", {'x': 8, 'y': 77})

        else:

            enemy = soldier.findNearestEnemy()

            if enemy:

                hero.command(soldier, "attack", enemy)

    elif step == 3:

        if soldier.pos.x < 74:

            hero.command(soldier, "move", {'x': 76, 'y': 76})

        else:

            enemy = soldier.findNearestEnemy()

            if enemy:

                hero.command(soldier, "attack", enemy)

                

def moveTo(position, fast=True):

    if (hero.isReady("jump") and fast):

        hero.jumpTo(position)

    else:

        hero.move(position)

index = 0

route = [[33, 12, False], [34, 9, False], [32, 6, False]]

    

def moveHero():

    if len(route) > index:

        moveTo({'x': route[index][0], 'y': route[index][1]}, route[index][2])

        if (hero.pos.x == route[index][0] and hero.pos.y == route[index][1]):

            return True

        else:

            return False

            

def attack(target):

    if target:

        if (hero.distanceTo(target) > 10):

            moveTo(target.pos)

        elif (hero.isReady("bash")):

            hero.bash(target)

        elif hero.isReady("cleave"):

            hero.cleave(target)

        else:

            hero.attack(target)

            

while True:

    if (hero.now() > 6 and hero.now() < 12):

        step = 1

    elif (hero.now() > 10 and hero.now() < 17):

        step = 2

    elif (hero.now() > 15 and hero.now() < 29):

        step = 3

    elif (hero.now() > 27 and hero.now() < 600):

        step = 4

    commandTroops()

    if step < 4:

        if moveHero():

            index = index + 1

    else:

        enemy = hero.findNearest(hero.findEnemies())

        if enemy:

            attack(enemy)

        else:

            moveTo({'x': 74, 'y': 44})

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值