所有代码均使用python编写。
# 你可以将一个if语句放到另一个if语句当中。
# 你必须注意这些if语句是如何互相影响的。
# 请确保代码缩进正确!
# 从外层if/else结构开始会有帮助
# 使用注释为内层if/else占位预留空间:
while True:
enemy= hero.findNearestEnemy()
# 如果有敌人出现,那么就...
if enemy:
# 使用distanceTo创建一个距离变量
distance= hero.distanceTo(enemy)
# 如果敌人与你的距离小于5米,那么就攻击它
if distance < 5:
hero.attack(enemy)
# 否则(这名敌人还离得很远),就使用shield
else:
ready= hero.shield()
# 否则(没有敌人)...
else:
hero.moveXY(40, 34)
while True:
enemy = hero.findNearestEnemy()
if enemy:
# 用 distanceTo 获取与敌人的距离。
distance = hero.distanceTo(enemy)
# 如果距离小于5米...
if distance <5:
# ...如果
ready = hero.isReady("cleave")
if ready:
hero.cleave(enemy)
#“cleave”技能准备好了,就用“cleave”干掉他们!
else:
# ...否则,仅仅进行普通攻击。
hero.attack(enemy)
while True:
enemy = hero.findNearestEnemy()
if enemy:
# 用 distanceTo 获取与敌人的距离。
distance = hero.distanceTo(enemy)
# 如果距离小于5米...
if distance <5:
ready = hero.isReady("cleave")
# ...如果 “cleave”技能准备好了,就用“cleave”干掉他们!
if ready:
hero.cleave(enemy)
# ...否则,仅仅进行普通攻击。
else:
hero.attack(enemy)
while True:
enemy = hero.findNearestEnemy()
if enemy:
# 用 distanceTo 获取与敌人的距离。
distance = hero.distanceTo(enemy)
# 如果距离小于5米...
if distance <5:
ready = hero.isReady("cleave")
if ready:
hero.cleave(enemy)
# ...如果 “cleave”技能准备好了,就用“cleave”干掉他们!
# ...否则,仅仅进行普通攻击。
else:
hero.attack(enemy)
# 矮人来袭!保护镇子!
# 定义你自己的函数来对抗敌人!
def cleaveOrAttack():
# 在函数中找到敌人,然后劈斩或是攻击它。
enemy = hero.findNearestEnemy()
distance = hero.isReady("cleave")
if enemy:
if distance:
hero.cleave(enemy)
hero.attack(enemy)
# 在巡逻点之间移动并调用函数。
while True:
hero.moveXY(35, 34)
# 使用上面定义的cleaveOrAttack函数。
cleaveOrAttack()
hero.moveXY(47, 27)
# 再次调用函数。
cleaveOrAttack()
hero.moveXY(60, 31)
# 再次调用函数。
cleaveOrAttack()
# 这定义了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()
# 这个函数攻击最近的敌人。
def findAndAttackEnemy():
enemy = hero.findNearestEnemy()
if enemy:
hero.attack(enemy)
# 定义一个函数来劈斩敌人(只在劈斩就绪时)
def findAndCleaveEnemy():
# 找到最近的敌人:
enemy = hero.findNearestEnemy()
# 如果敌人存在:
if enemy:
# 如果"cleave"就绪了:
ready = hero.isReady("cleave")
if ready:
# 是时候使用劈斩了!
hero.cleave(enemy)
pass
# 在主循环中,巡逻、劈斩和攻击。
while True:
# 移动到巡逻点,劈斩并攻击。
hero.moveXY(35, 34)
findAndCleaveEnemy()
findAndAttackEnemy()
# 移动到另一点:
hero.moveXY(35, 34)
# 使用findAndCleaveEnemy函数:
findAndCleaveEnemy()
# 使用findAndAttackEnemy函数:
findAndAttackEnemy()
# 差役试图偷取金币
# 编写一个函数,在差役盗取金币前将其干掉
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()
attackenemy()
# Collect coins and run lest the burl will find you.
# The function allows your hero take an item.
def takeItem(item):
hero.moveXY(item.pos.x, item.pos.y)
# Write the function "checkTakeRu
def checkTakeRun(item1):
if item1:
takeItem(item1)
hero.moveXY(40, 12)
else:
hero.moveXY(40, 12)
# If the item exists, use "takeItem" function to take it.
# Move to the start point (the green mark) whether the item or no.
# Don't change this code.
while True:
hero.moveXY(16, 56)
coin = hero.findNearestItem()
checkTakeRun(coin)
hero.moveXY(64, 56)
coin = hero.findNearestItem()
checkTakeRun(coin)
def checkEnemyOrSafe(target):
# 如果目标(参数)存在:
if target:
# 然后攻击目标
hero.attack(target)
# 否则:
else:
# 使用say()来叫农民。
hero.say("来人呢来人呢")
while True:
# 移动到并检查右上的X标记。
hero.moveXY(64, 54)
enemy1 = hero.findNearestEnemy()
checkEnemyOrSafe(enemy1)
# 移动到左下的X标记处。
hero.moveXY(16, 15)
# 将findNearestEnemy()的结果存到一个变量中。
enemy2 = hero.findNearestEnemy();
# 调用checkEnemyOrSafe,并传递
checkEnemyOrSafe(enemy2)
# findNearestEnemy的结果作为参数
# 收集4个发光石,用来打败食人魔斗士。
# 如果发现发光石的话,藏起来。
def checkTakeHide(item):
if item:
# 物品在此,拿着它。
hero.moveXY(item.pos.x, item.pos.y)
# 然后移动到营地中央(40, 34)
hero.moveXY(40, 34)
while True:
# 移动到右上的X标记。
hero.moveXY(68, 56)
# 在那里搜索一块发光石。
lightstone = hero.findNearestItem()
# 调用checkTakeHide,并使用参数:lightstone
checkTakeHide(lightstone)
# 移动到左上角的标记。
hero.moveXY(12, 56)
# 搜索发光石。
lightstone = hero.findNearestItem()
# 调用checkTakeHide函数。
checkTakeHide(lightstone)
# 将搜索的结果作为参数传入。
# Intercept all ogre messengers from ambush.
def ambushAttack(target):
# Attack the target if it exists and return to the mark.
# Write the function:
if target:
hero.attack(target)
hero.moveXY(52, 36)
while True:
ogre = hero.findNearestEnemy()
ambushAttack(ogre)
# 唯一的出口被食人魔堵住了。
# 躲着骷髅怪,并一个个击败食人魔
# 这个函数需要攻击敌人并隐藏。
def hitOrHide(target):
# 如果'目标'存在:
if target:
# 攻击'目标'
hero.attack(target)
# 然后移动到红色标记。
hero.moveXY(32, 16)
while True:
enemy = hero.findNearestEnemy()
hitOrHide(enemy)
# 森林中一座被遗忘的墓地!
# 但是食人魔紧追不舍。
# 在防御矮人的同时破开坟墓
# 这个函数应该在敌人存在时攻击,否则攻击门!
def checkToDefend():
# 检查目标是否存在
enemy = hero.findNearestEnemy()
# 如果是这样,攻击目标。
if enemy:
hero.attack(enemy)
# 如果没有目标,使用else去做点别的事
else:
hero.attack("Door")
# 否则攻击 "Door"
while True:
checkToDefend()
# 一大波食人魔正在到来!
# 使用 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, 17)
# 创建名为 bottomEnemy 的变量,寻找最近敌人。
bottomenemy = hero.findNearestEnemy()
# 使用 checkAndAttack 函数,并使用 bottomEnemy 变量。
checkAndAttack(bottomenemy)
def cleaveOrAttack(enemy):
# 如果 “cleave” 技能冷却完毕,那就使用它!否则,使用普通攻击。
em = hero.isReady("cleave")
if em:
hero.cleave(enemy)
else:
hero.attack(enemy)
while True:
enemy = hero.findNearestEnemy()
if enemy:
distance = hero.distanceTo(enemy)
if distance < 5:
# 调用上面定义的 “cleaveOrAttack” 函数
cleaveOrAttack(enemy)
# 这里展示了如何定义一个叫作cleaveWhenClose的函数
# 函数定义了一个参数,名为target
def cleaveWhenClose(target):
if hero.distanceTo(target) < 5:
# 将你的攻击代码放到这里。
# 如果cleave准备就绪,那就劈斩目标
ready = hero.isReady("cleave")
if ready:
hero.cleave(target)
# 否则,使用attack攻击目标!
else:
hero.attack(target)
# 这段代码不是函数的一部分。
while True:
enemy = hero.findNearestEnemy()
if enemy:
# 注意在cleaveWhenClose内部,我们用target指向敌人。
cleaveWhenClose(enemy)
# 你现在拥有一个宠物!
def speak(event):
# 你的宠物需要用pet.say()进行回应
pet.say("hello kitty")
# 这将告诉你的宠物,在听到声音时运行speak()函数
pet.on("hear", speak)
# 和你的宠物交谈!
#pet.say("Hello")
hero.say("message")
# In this level you will use functions with two parameters.
# Look at the structure below, notice how there are two arguments.
# These are both accessible within the function.
def checkAndAttack(x, y):
# First move to the coordinates provided by the parameters.
hero.moveXY(x, y)
# Then check for an enemy.
enemy = hero.findNearestEnemy()
# If there is one, attack it!
if enemy:
hero.attack(enemy)
checkAndAttack(24, 42)
checkAndAttack(27, 60)
# Navigate to the last 3 x-marks and defeat any remaining munchkins.
checkAndAttack(42, 50)
checkAndAttack(39, 24)
checkAndAttack(55, 29)
# 农民和士兵聚集在森林。
# 命令农民战斗,敌人滚蛋!
while True:
friend = hero.findNearestFriend()
if friend:
hero.say("战斗, " + friend.id + "!")
# 寻找最近的敌人,然后让他们滚蛋
enemy = hero.findNearestEnemy()
if enemy:
hero.say("滚蛋," + enemy.id + "!")