codecombat極客戰記森林61-70通關代碼
python代碼
61.罪與罰
# 看起來食人魔酋長正在偷你的寶石啊!
# 指揮兩門火炮攻擊敵人達成目標。
while True:
item = hero.findNearestItem()
if item:
itempos = item.pos.x + " " + item.pos.y
hero.say("item at :" + itempos)
enemy = hero.findNearestEnemy()
if enemy:
enemyPos = enemy.pos.x + " " + enemy.pos.y
hero.say("enemy at : " + enemyPos)
# 現在你遇到糖衣炮彈了
# 爲什麼不把糖衣也吃掉呢?
# 找到道具的位置並且
# 說出火炮將要攻擊的目標。
62.返回AGRIPPA
def enemyInRange(enemy):
# 如果敵人少於距離5個,返回一個true值
dis = hero.distanceTo(enemy)
if dis < 5:
return True
else:
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)
63.好夥伴的名字A
# 農民想知道寵物的名字。
# 使用這個函數作爲"hear"事件的處理函數。
def sayName(event):
# 寵物會在函數調用時按順序說這些。
pet.say("我名叫狂獸。")
pet.say("不過我的朋友們叫我毛球。")
# 使用pet.on("eventName", functionName)來添加事件監聽函數給寵物
# 在這裏使用"hear" sayName及pet.on()
pet.on("hear", sayName)
# 你這次不需要說任何東西!
# 農民會進行交談。
64.好夥伴的名字B
# 寵物需要向英雄和農民問好。
# 使用這個函數作爲"hear"事件的處理函數:
def sayHello(event):
# 寵物在說你好:
pet.say("致敬")
# 使用寵物的.on("eventType", functionName)方法.
# 這一關裏,寵物需要在聽到聲音後運行sayHello
pet.on("hear", sayHello)
# 那麼,問候寵物,等待迴應。
hero.say("你好,朋友!")
65.博士貓咪
# 教你的寵物回答問題!
# 很幸運,所有的答案都是"2"
def sayTwo(event):
# 使用pet.say()來回答"2"
pet.say("2")
# 使用pet:on(),通過sayTwo來處理"hear"事件
pet.on("hear", sayTwo)
# 現在休息並觀看錶演吧!
hero.say("一加一等於…?")
hero.say("x^3 - 6x^2 + 12x - 8 = 0. x等於多少?")
hero.say("火星有多少衛星?")
66.好夥伴的名字
# 我們需要知道新寵物的名字。
# 把這個函數用作寵物 "hear" 事件的處理函數。
def onHear(event):
# 不要更改這個函數
pet.say("喵嗚~ 汪 喵嗚~")
pet.say("汪 汪")
pet.say("喵嗚~")
pet.say("喵嗚~")
pet.say("喵嗚~ 汪 喵嗚~ 喵嗚~")
# 使用 “the pet.on(eventType,eventHandler) 方法”
# 指派onHear函數來處理"hear"事件。
pet.on("hear" , onHear )
# 這必須在 "pet.on" 的後面。
hero.say("夥計,你叫什麼名字?")
hero.say("能重複一次嗎?")
67.寵物小測試
# 編寫一個事件處理函數,名爲onHear
# 完成onHear函數
def onHear(event):
# 寵物需要在onHear中說點什麼。
pet.say("可以")
pet.say("不是")
pet.say("5")
pet.say("好象是的")
pet.say("不告訴你")
pet.on("hear", onHear)
hero.say("能聽懂我的話嗎?")
hero.say("你是美洲獅嗎?")
hero.say("你多大啦?")
# 再問兩個問題。
hero.say("你是寵物嗎")
hero.say("你在那裏?")
68.看門狗
# 你無法幫助農民過河。
# 不過,你的寵物做得到!
# 將你的狼調教成看門狗。
def onSpawn(event):
while True:
# 寵物一樣可以發現敵人。
enemy = pet.findNearestEnemy()
# 如果有敵人:
if enemy:
# 然後讓寵物說點什麼:
pet.say("注意,敵襲敵襲")
pet.on("spawn", onSpawn);
69.漫漫長路
# 移動到右邊
# 補全這個函數:
def onSpawn(event):
# 在 while-true 循環裏:
while True:
# 使用hero.findNearestItem()
item = hero.findNearestItem()
# 如果有物品:
if item:
# 使用pet.fetch(item)來拿取物品。
pet.fetch(item)
# 使用pet.on()來將onSpawn指派給"spawn"事件
pet.on("spawn", onSpawn)
hero.moveXY(78, 35)
70.空投
# 拿起刀劍,保護村莊。
def onSpawn (event):
while True:
item = hero.findNearestItem()
# 如果存在的話,寵物應該獲取該物品:
if item:
pet.fetch(item)
# 爲寵物的“spawn”分配onSpawn功能。
pet.on("spawn", onSpawn)
while True:
# Guard the left passage:
enemy = hero.findNearestEnemy()
if enemy:
hero.attack(enemy)