CodeCombat代码全记录(Python学习利器)--边地森林(第二章)代码5

死亡之触

本关你将体验另外一个职业(巫师)的不同技能,如果你不知道怎么使用技能,请查看装备所带的方法。

# 短距离情况下,施放"drain-life"法术。
# 远距离使用魔杖攻击。

while True:
    enemy = hero.findNearestEnemy()
    if enemy:
        distance = hero.distanceTo(enemy)
        if distance < 15:
            # 对敌人施放 "drain-life" 法术。
            hero.cast("drain-life", enemy)
        else:
            # 用魔杖攻击敌人。
            hero.attack(enemy)

修骨者

牧师牧师,注意奶好!!注意好站位!!!
哈哈,体验下治疗术的感觉

# 治疗盟友士兵来突围。
while True:
    if hero.canCast("regen"):
        bernardDistance = hero.distanceTo("Bernard")
        if bernardDistance < 10:
            # "Bernard"需要治疗!
            hero.cast("regen", "Bernard")
        
        # 使用"if"和"distanceTo"来治疗"Chandra"
        # 如果她距离小于10米。
        chandraDistance = hero.distanceTo("Bernard")
        if chandraDistance < 10:
            hero.cast("regen", "Bernard")
        
    else:
        # 如果你没有执行 "regen",使用"if" 和"distanceTo"
        # 来攻击距离小于下面值的敌人 hero.attackRange.
        enemy = hero.findNearestEnemy()
        if enemy:
            distance = hero.distanceTo(enemy)
            if distance > 10:
                hero.attack(enemy)

贴身护卫

while True:
    enemy = hero.findNearestEnemy()
    distance = hero.distanceTo(enemy)
    if distance < 10:
        # 如果他们与农民太近,就攻击他们
        hero.attack(enemy)
        pass
    # 否则的话,呆在农民旁边!使用else
    hero.moveXY(40, 37)

试着用你自己的代码,使用上技能!!!!

远程除法(Long-Range Division)

# 摧毁雷区!
# 用`say`说出雷区的射程范围。
# 使用除法计算射程范围。

enemy = hero.findNearestEnemy()
distanceToEnemy = hero.distanceTo(enemy)
# 说第一个射程范围:distanceToEnemy除以3
hero.say(distanceToEnemy / 3)
hero.say("开火!")
# 说第二个射程范围:distanceToEnemy除以1.5
hero.say(distanceToEnemy / 1.5)
hero.say("开火!")

# 说说这些事的动机。真的。相信我们。
hero.say("哇哦!")
hero.say("我们来了!")
hero.say("冲锋!!")

# 现在,使用一个while-true循环来攻击敌人。
while True:
    enemy = hero.findNearestEnemy()
    hero.attack(enemy)

矮人蜂拥而至

while True:
    # 检查与最近敌人的距离。
    nearestEnemy = hero.findNearestEnemy()
    distance = hero.distanceTo(nearestEnemy)
    # 如果它接近到10m以内,使用cleave!
    if distance < 10:
        if hero.isReady("cleave"):
            hero.cleave(nearestEnemy)
    # 否则,根据名字攻击"Chest"(宝箱)。
    hero.attack("Chest")

发疯的矮人

# 又一个宝箱等待英雄打开!
# 攻击宝箱来打开它。
# 有些食人魔矮人可不会呆呆地站着,看着你攻击!
# 当食人魔离你太近时,你得学着保护你自己

while True:
    enemy = hero.findNearestEnemy()
    distance = hero.distanceTo(enemy)
    if hero.isReady("cleave"):
        # 如果劈斩就绪,优先使用劈斩:
        hero.cleave(enemy)
        pass
    elif distance < 5:
        # 如果离你最近的食人魔矮人离得太近,攻击它:
        hero.attack(enemy)
        pass
    else:
        # 否则,尝试打开宝箱:
        # 使用宝箱的名称来进行攻击:"Chest"。
        hero.attack("Chest")
        pass

跃火林中

# 在这关,别碰恶魔石!往其他方向移动避开它们!
while True:
    evilstone = hero.findNearestItem()
    if evilstone:
        pos = evilstone.pos
        if pos.x == 34:     # ==的意思是"is equal to""(等于)
            # 如果恶魔石在左边,走到右边。
            hero.moveXY(46, 23)
            pass
        else:
            # 如果恶魔石在右边,走到左边。
            hero.moveXY(34, 23)
            pass
    else:
        # 如果没有恶魔石,那就去到中间。
        hero.moveXY(40, 23)
        pass

乡村巡游者

此关开始教你怎么样去定义自己的函数,而且定义后,如何去调用这个函数!!如果觉得理解的不够,请仔细看提示!!

# 这定义了findAndAttackEnemy函数
def findAndAttackEnemy():
    enemy = hero.findNearestEnemy()
    if enemy:
        hero.attack(enemy)

# 这段代码不是函数的一部分。
while True:
    # 现在你可以使用findAndAttackEnemy在村子里巡逻
    hero.moveXY(35, 34)
    findAndAttackEnemy()
    
    # 现在移动到右侧入口。
    hero.moveXY(60, 31)
    # 使用findAndAttackEnemy
    findAndAttackEnemy()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值