以静制动
# 你可以将一个if语句放到另一个if语句当中。
# 你必须注意这些if语句是如何互相影响的。
# 请确保代码缩进正确!
# 从外层if/else结构开始会有帮助。
# 使用注释为内层if/else占位预留空间:
while True:
enemy = hero.findNearestEnemy()
# 如果有敌人出现,那么就...
if enemy:
# 使用distanceTo创建一个距离变量。
distanceToEnemy = hero.distanceTo(enemy)
# 如果敌人与你的距离小于5米,那么就攻击。
if distanceToEnemy < 5:
hero.attack(enemy)
# 否则(敌人还离得很远),那么就使用shield。
else:
hero.shield()
# 否则(没有敌人)...
else:
# …那么,回到X位置。
hero.moveXY(40, 34)
agrippa守卫战
while True:
enemy = hero.findNearestEnemy()
if enemy:
# 用 distanceTo 获取与敌人的距离。
distance = hero.distanceTo(enemy)
# 如果距离小于5米...
if distance < 5:
# ...如果"cleave"技能准备好了,就用cleave干掉他们!
if hero.isReady("cleave"):
hero.cleave(enemy)
# ...否则,仅仅进行普通攻击。
hero.attack(enemy)
agrippa守卫战A
while True:
enemy = hero.findNearestEnemy()
if enemy:
# 用 distanceTo 获取与敌人的距离。
distanceToEnemy = hero.distanceTo(enemy)
# 如果距离小于5米...
if distanceToEnemy < 5:
# ...如果"cleave"技能准备好了,就用cleave干掉他们!
if hero.isReady("cleave"):
hero.cleave(enemy)
# ...否则,仅仅进行普通攻击。
hero.attack(enemy)
agrippa守卫战B
while True:
enemy = hero.findNearestEnemy()
if enemy:
pass # 用你自己的代码替换这行。
# 用 distanceTo 获取与敌人的距离。
distance = hero.distanceTo(enemy)
# 如果距离小于5米...
if distance < 5:
# ...如果"cleave"技能准备好了,就用cleave干掉他们!
if hero.isReady("cleave"):
hero.cleave(enemy)
# ...否则,仅仅进行普通攻击。
hero.attack(enemy)
村庄守卫
2个嵌套的if如果关联关系很近,那我们可以写成一句话,用and连起来!例如此代码中的如果发现了敌人,并且劈斩技能已经准备好。
# 这个函数攻击最近的敌人。
def findAndAttackEnemy():
enemy = hero.findNearestEnemy()
if enemy:
hero.attack(enemy)
# 定义一个函数来劈斩敌人(只在劈斩就绪时)
def findAndCleaveEnemy():
# 找到最近的敌人:
enemy =hero.findNearestEnemy()
# 如果敌人存在:
if enemy and hero.isReady("cleave"):
# 如果"cleave"就绪了:
# 是时候使用劈斩了!
hero.cleave(enemy)
# 在主循环中,巡逻、劈斩和攻击。
while True:
# 移动到巡逻点,劈斩并攻击。
hero.moveXY(35, 34)
findAndCleaveEnemy()
findAndAttackEnemy()
# 移动到另一点:
hero.moveXY(60, 31)
# 使用findAndCleaveEnemy函数:
findAndCleaveEnemy()
# 使用findAndAttackEnemy函数:
findAndAttackEnemy()
边地之叉
你需要渐渐的学会定义你自己的函数,传递参数的函数!!并调用相关参数。
# 一大波食人魔正在到来!
# 使用 checkAndAttack 函数让代码易读。
# 这个函数有一个参数。
# 参数是一种给函数传递信息的方式。
def checkAndAttack(target):
# target参数只是一个变量!
# 它包含了函数调用时的参数。
if target:
hero.attack(target)
hero.moveXY(43, 34)
while True:
hero.moveXY(58, 52)
topEnemy = hero.findNearestEnemy()
checkAndAttack(topEnemy)
# 移动到底部的X标记处。
hero.moveXY(58, 16)
# 创建名为 bottomEnemy 的变量,寻找最近敌人。
bottomEnemy = hero.findNearestEnemy()
# 使用 checkAndAttack 函数,并使用 bottomEnemy 变量。
checkAndAttack(bottomEnemy)
村庄守护神
你需要渐渐的学会定义你自己的函数!!
# 食人魔矮人来袭!保护镇子!
# 定义你自己的函数来对抗敌人!
def cleaveOrAttack():
# 在函数中,找到敌人,然后劈斩或是攻击它。
ogre = hero.findNearestEnemy()
if ogre:
if hero.isReady("cleave"):
hero.cleave(ogre)
# 否则,攻击食人魔:
else:
hero.attack(ogre)
# 在巡逻点之间移动并调用函数。
while True:
hero.moveXY(35, 34)
# 使用上面定义的cleaveOrAttack函数。
cleaveOrAttack()
hero.moveXY(47, 27)
# 再次调用函数。
cleaveOrAttack()
hero.moveXY(60, 31)
# 再次调用函数。
cleaveOrAttack()
造币场
你之前的鞋的速度可能跟不上了,时间是有限的,试着换双速度快的鞋!!
# 差役试图偷取金币
# 编写一个函数,在差役盗取金币前将其干掉
def pickUpCoin():
coin = hero.findNearestItem()
if coin:
hero.moveXY(coin.pos.x, coin.pos.y)
# 在下方写一个攻击敌人的函数attackEnemy。
# 寻找最近的敌人,如果出现敌人就进行攻击
def attackEnemy():
enemy = hero.findNearestEnemy()
if enemy:
hero.attack(enemy)
while True:
attackEnemy() # ∆ 在写好 attackEnemy 函数后消除这里的注释。
pickUpCoin()