简介
就像在之前的 Agrippa Defense 关卡中一样,您将重放相同的场景,但具有更高级的功能。
你可以使用一个函数来计算一个值,然后 返回 它可以在你的代码中使用它。
def triple(a): b = a + a + a; return b; hero.say("3 × 3 = " + triple(3)) hero.say("4 × 3 = " + triple(4))默认代码
def enemyInRange(enemy): # 如果敌人少于5个单位,返回一个true值return False def cleaveOrAttack(enemy): if hero.isReady('cleave'): hero.cleave(enemy) else: hero.attack(enemy) while True: enemy = hero.findNearestEnemy() if enemy: # 调用 enemyInRange 检查敌人的距离。 if enemyInRange(enemy): cleaveOrAttack(enemy)
概览
在之前的 Agrippa Defense 级别中,我们通过使用函数来提取逻辑来简化我们的代码。在这个级别中,我们使用一个函数来计算一个值并将其传回给调用代码。
在这个级别中,我们会进行一次距离检查,以便我们只能对抗靠近我们的食人魔:
while True: enemy = hero.findNearestEnemy() if enemy: distance = hero.distanceTo(enemy) if distance < 5: cleaveOrAttack(enemy)我们可以通过将距离检查放在自己的函数中来使代码更清晰。 函数 return true 或 false 值,所以我们可以决定是否攻击:
while True: enemy = hero.findNearestEnemy() if enemy: if enemyInRange(enemy): cleaveOrAttack(enemy)当你有一个函数计算一个值时,使用 return 关键字来结束这个函数并且把一个值发回给调用者:
def triple(a): b = a + a + a; return b; hero.say("3 × 3 = " + triple(3)) hero.say("4 × 3 = " + triple(4))