codecombat极客战记森林21-40通关代码
所有代码均使用python编写
21.强攻ATETH塔
hero.moveXY(55, 14)
hero.moveXY(92, 18)
# 在红色的 X 位置建造一个火焰陷阱
hero.buildXY("fire-trap", 92, 18)
# 撤退到木的 X 位置,来避免伤害。
hero.moveXY(55, 14)
# 等雇佣兵发现闪亮的火焰陷阱
# 进入营地,放置火焰陷阱在红色的 X 位置
hero.moveXY(89, 52)
hero.buildXY("fire-trap", 89, 52)
hero.moveXY(60, 62)
hero.buildXY("fire-trap", 60, 62)
# 冲你的部队喊撤退(提示:使用 say 命令, "Retreat!")
hero.say("Retreat!")
# 逃回到左边的木的 X 位置
hero.moveXY(-17, 38)
22.森林劈斩者
23.盾击
# 用shield盾牌和cleave顺势斩在两波进攻中活下来
# 如果cleave顺势斩没有准备好,就用你的shield盾牌技能。
# 你将会需要至少142健康值来保证活下来
while True:
enemy = hero.findNearestEnemy()
ready = hero.isReady("cleave")
if ready:
hero.cleave(enemy)
else:
hero.shield()
#hero.attack(enemy)
24.BURLS教你学布尔
# 布尔值要么是真 True 要么是假 False
# == 表示 ”等于吗“?
# 所以, A == B 是在问:”A 是等于 B吗?“
# 答案会是一个布尔值!
# 如果太难了,点一下”Hints“ 提示按钮!
# 问题: 2 == 3
# 回答正确的答案:
hero.say(False)
# 问题: 3 == 3
# 回答 True 真 或者 False 假 2:
hero.say(True)
# 问题: "Three" == 3
# 回答 True 真 或者 False 假 3:
hero.say(False)
# 问题: "Three" == "Three"
# 回答 True 真 或者 False 假 4:
hero.say(True)
# 问题: 1 + 2 == 3
# 回答 True 真 或者 False 假 5:
hero.say(True)
25.奥法盟友
# 拿下那些兽人
while True:
enemy = hero.findNearestEnemy()
if enemy:
if hero.isReady("cleave"):
hero.cleave(enemy)
else:
hero.attack(enemy)
26.死亡之触
# 在短距离中释放你的『吸取生命』技能。
# 使用你的法丈在远距离攻击。
while True:
enemy = hero.findNearestEnemy()
if enemy:
distance = hero.distanceTo(enemy)
if distance < 15:
# 在敌人里释放『吸取生命』技能。
hero.cast("drain-life", enemy)
else:
# 使用你的盟友攻击敌人。
hero.attack(enemy)
27.修骨者
# 拯救盟友的士兵来突围
while True:
if hero.canCast("regen"):
bernardDistance = hero.distanceTo("Bernard")
if bernardDistance < 10:
# Bernard需要治疗!
hero.cast("regen", "Bernard")
# 使用『if』和『distanceTo』来治疗 "Chandra"
# 如果她小于10米的距离。
changraDistance = hero.distanceTo("Chandra")
if changraDistance < 10:
# Bernard需要治疗!
hero.cast("regen", "Chandra")
else:
# 如果你没有执行 regen,使用 if 和 distanceTo
# 来攻击那些小于一定距离的敌人 hero.attackRange.
enemy = hero.findNearestEnemy()
if enemy:
hero.attack(enemy)
28.矮人蜂拥而至
while True:
# 检查与最近敌人的距离
enemy = hero.findNearestEnemy()
# 如果它接近到10m以内,对它使用cleave!
distance = hero.distanceTo(enemy)
if distance < 10:
hero.cleave(enemy)
# 否则,攻击某名字的宝箱(“Chest”)
else:
hero.attack("Chest")
29.边地僵局
# 矮人正在攻击!
# 攻击会有规律的一波波袭来。
# 可以的话,使用劈斩来清理大量敌人。
while True:
enemy = hero.findNearestEnemy()
# 使用带有‘isReady’的if语句来检查 “cleave”
if hero.isReady("cleave"):
hero.cleave(enemy)
# 劈斩!
# 否则,如果 cleave 还没准备好的话:
else:
# 攻击最近的食人魔!
hero.attack(enemy)
30.测距仪
# 食人魔正在森林中巡视!
# 使用distanceTo方法找到敌人在哪。
# 说出与每个敌人的距离,告诉大炮向哪开火!
enemy1 = "Gort"
distance1 = hero.distanceTo(enemy1)
hero.say(distance1)
enemy2 = "Smasher"
distance2 = hero.distanceTo(enemy2)
# 说出distance2变量!
hero.say(distance2)
# 找到并说出与剩余敌人之间的距离:
# 不要攻击友方!
friend3 = "Charles"
enemy4 = "Gorgnub"
distance3 = hero.distanceTo(enemy4)
hero.say(distance3)
31.eise之战
# 劈斩正在10秒冷却中。
# 使用 else 语句在恢复时防守。
while True:
enemy = hero.findNearestEnemy()
if hero.isReady("cleave"):
hero.cleave()
# 写个 else: 当 “cleave” 没有准备好时去做点什么。
else:
# 确保攻击了敌人:
hero.attack(enemy)
32.边地僵局A
# 矮人正在攻击!
# 攻击会有规律的一波波袭来。
# 可以的话,使用劈斩来清理大量敌人。
while True:
enemy = hero.findNearestEnemy()
# 使用带有‘isReady’的if语句来检查 “cleave”
ready = hero.isReady("cleave")
if ready:
# 劈斩!
hero.cleave(enemy)
#hero.say("大招来了,一刀秒你们")
# 否则,如果 cleave 还没准备好的话:
else:
# 攻击最近的食人魔。
hero.attack(enemy)
33.边地僵局B
# 矮人正在攻击!
# 攻击会有规律的一波波袭来。
# 可以的话,使用劈斩来清理大量敌人。
while True:
enemy = hero.findNearestEnemy()
# 使用带有‘isReady’的if语句来检查 “cleave”
if enemy:
if hero.isReady("cleave"):
hero.cleave(enemy)
# 劈斩!
# 否则,如果 cleave 还没准备好的话:
else:
hero.attack(enemy)
# 攻击最近的食人魔!
34.收割小食人魔
# 铲除所有遗留的小食人魔
# 确保你有足够的护甲。
while True:
enemy = hero.findNearestEnemy()
ready = hero.isReady("cleave")
if ready:
hero.cleave(enemy)
else:
hero.attack(enemy)
35.敏捷的匕首
# 长距离用你的弓,短距离用匕首
while True:
enemy = hero.findNearestEnemy()
if enemy:
distance = hero.distanceTo(enemy)
if distance < hero.throwRange:
# 向敌人扔你的匕首
hero.throw(enemy)
# else:
# 用你的弓攻击敌人
# hero.attack(enemy)
36.弹片
# 使用炸药干掉食人魔
# 然后用你的弓干掉他们
while True:
enemy = hero.findNearestEnemy()
if enemy:
if hero.isReady("throw"):
distance = hero.distanceTo(enemy)
# 如果食人魔距离多于15米的时候,扔炸药炸他
# 使用 if 来比较距离和15
if distance > 15:
hero.throw(enemy)
# 使用 else 来攻击它如果你不能够炸它
else:
hero.attack(enemy)
37.LONG-RANGE DIVISION
# Destroy the mines!
# Use `say` to call out the range to the mines.
# Use division to calculate the range.
enemy = hero.findNearestEnemy()
distanceToEnemy = hero.distanceTo(enemy)
# Say first Range: distanceToEnemy divided by 3
hero.say(distanceToEnemy/3)
hero.say("Fire!")
# Say second range: distanceToEnemy divided by 1.5
hero.say(distanceToEnemy/1.5)
hero.say("Fire!")
# Say these things for motivation. Really. Trust us.
hero.say("Woo hoo!")
hero.say("Here we go!")
hero.say("Charge!!")
# Now, use a while-true loop to attack the enemies.
while True:
enemy = hero.findNearestEnemy()
hero.attack(enemy)
38.帖身护卫
while True:
enemy = hero.findNearestEnemy()
distance = hero.distanceTo(enemy)
if distance < 10:
# 如果他们与农民太近,就攻击他们
hero.attack(enemy)
pass
# 否则的话,呆在农民旁边!使用else
else:
hero.moveXY(40, 37)
39.发狂的小矮人
# 又一个宝箱等待英雄打开!
# 攻击宝箱来打开它。
# 有些食人魔矮人可不会呆呆地站着挨打!
# 当食人魔离你太近时,你得学着保护你自己
while True:
enemy = hero.findNearestEnemy()
distance = hero.distanceTo(enemy)
if hero.isReady("cleave"):
# 如果劈斩就绪,优先使用劈斩:
hero.cleave(enemy)
elif distance < 5:
# 攻击靠近并离你最近的食人魔矮人
hero.attack(enemy)
else:
# 否则,尝试打开宝箱:
# Use the name of the chest to attack: "Chest".
hero.attack("Chest")
40.跃火林中
# 在这关,别碰恶魔石!往其他方向移动避开它们!
while True:
evilstone = hero.findNearestItem()
if evilstone:
pos = evilstone.pos
if pos.x == 34:
# 如果恶魔石在左边,走到右边。
hero.moveXY(46,22)
pass
else:
# 如果恶魔石在右边,走到左边。
hero.moveXY(34,22)
pass
else:
# 如果没有恶魔石,那就去到中间。
hero.moveXY(40, 22)
pass