一座被遗忘的墓地!
简介
![](https://codecombat.163.com/news/img/tomb_raider.61d043d4.jpeg)
记得参数是一种给函数传递信息的方式。它是函数被调用时预定义的变量,包含在 () 内。
def checkAndEat(target):
if target.type == "fruit":
hero.eat(target)
else:
hero.toss(target)
while True:
hero.moveUp()
nearestTree = hero.findNearestTree()
food = hero.harvest(nearestTree)
checkAndEat(food)
默认代码
# 森林中一座被遗忘的墓地!
# 但是食人魔紧追不舍。
# 在防御矮人的同时破开坟墓
# 这个函数应该在敌人存在时攻击,否则攻击门!
def checkToDefend(target):
# 检查`target`是否存在
# 如果是这样,攻击`target`。
# 如果没有`target`,使用else去做点别的事
# 否则攻击 "Door"
pass
while True:
enemy = hero.findNearestEnemy()
checkToDefend(enemy)
概览
是时候填入函数体并用函数让代码简洁明了了!
记住,parameter(参数)是将信息传递到独立函数中的方式。它是一个预定义的变量,包含调用执行时函数之后() 内的内容。参见下列代码,看函数是如何调用的:
# 这里'定义'了一个函数:
def moveUpAndDown():
hero.moveUp()# 这里是在调用moveUp函数。
hero.moveDown()# 这里是在调用moveDown函数。
hero.say("我在说话!") #这是在调用say方法。
moveUpAndDown() # 这是在调用自定义的moveUpAndDown方法。
盗墓者 解法
# 森林中一座被遗忘的墓地!
# 但是食人魔紧追不舍。
# 在防御矮人的同时破开坟墓
# 这个函数应该在敌人存在时攻击,否则攻击门!
def checkToDefend(target):
# 检查`target`是否存在
if target:
# 如果是这样,攻击`target`。
hero.attack(target)
# 如果没有`target`,使用else去做点别的事
else:
# 否则攻击 "Door"
hero.attack("Door")
while True:
enemy = hero.findNearestEnemy()
checkToDefend(enemy)