(点击图片进入关卡)
食人魔们从非主要方向进攻!放置灭火器来教他们不要再次逆火而行。
简介
兽人从对角线方向攻来。
首先,找到敌人是 isAbove (在上面) 还是 isBelow (在下面) 。
然后找出敌人是 isLeft (在左边) 还是 isRight (在右边)
然后,综合所有条件在正确的 X 标记处建造 "fire-trap" 。
默认代码
# 找出食人魔是来自哪个方向的
while True:
enemy = hero.findNearestEnemy()
if enemy:
# 左边:enemy.pos.x小于hero.pos.x
isLeft = hero.pos.x > enemy.pos.x
# 上方:enemy.pos.y大于hero.pos.y
isAbove = hero.pos.y < enemy.pos.y
# 右边:enemy.pos.x大于hero.pos.x
# 下方:enemy.pos.y小于hero.pos.y
# 如果敌人在上方 (isAbove) 和 左边 (isLeft):
# buildXY()是X标记处的一个"fire-trap"。
if isLeft and isAbove:
hero.buildXY("fire-trap", 20, 51)
# 如果敌人在上方 (isAbove) 和右边 (isRight):
# buildXY()是X标记处的一个"fire-trap"。
# 如果敌人在下方 (isBelow) 和左边 (isLeft):
# buildXY()是X标记处的一个"fire-trap"。
# 如果敌人在下方 (isBelow) 和右边 (isRight):
# buildXY()是X标记处的一个"fire-trap"。
hero.moveXY(40, 34)
else:
hero.moveXY(40, 34)
概览
在这关,兽人从对角线方向进攻!
在 左边 的敌人的 pos.x 会小于英雄的 pos.x 。
在 右边 的敌人的 pos.x 会大于英雄的 `pos.x'。
在 上边 的敌人的 pos.y 会大于英雄的 pos.y 。
在 下边 的敌人的 pos.y 会小于英雄的 pos.y 。
检查敌人是否在左上角,大概这样做:
enemy = hero.findNearestEnemy()
if enemy:
if enemy.pos.x < hero.pos.x and enemy.pos.y > hero.pos.y:
# 在左上角建造陷阱。
不过有更加清晰的写法:
enemy = hero.findNearestEnemy()
if enemy:
isAbove = enemy.pos.y > hero.pos.y
isLeft = enemy.pos.x < hero.pos.x
if isAbove and isLeft:
# 在左上角建造陷阱。
不仅方便补全其他方向的代码,还容易看懂!
沙漠核心 解法
# 找出食人魔是来自哪个方向的
while True:
enemy = hero.findNearestEnemy()
if enemy:
# 左边:enemy.pos.x小于hero.pos.x
isLeft = hero.pos.x > enemy.pos.x
# 上方:enemy.pos.y大于hero.pos.y
isAbove = hero.pos.y < enemy.pos.y
# 右边:enemy.pos.x大于hero.pos.x
isRight = hero.pos.x < enemy.pos.x
# 下方:enemy.pos.y小于hero.pos.y
isBelow = hero.pos.y > enemy.pos.y
# 如果敌人在上方 (isAbove) 和 左边 (isLeft):
# buildXY()是X标记处的一个"fire-trap"。
if isLeft and isAbove:
hero.buildXY("fire-trap", 20, 51)
# 如果敌人在上方 (isAbove) 和右边 (isRight):
# buildXY()是X标记处的一个"fire-trap"。
if isRight and isAbove:
hero.buildXY("fire-trap", 60, 51)
# 如果敌人在下方 (isBelow) 和左边 (isLeft):
# buildXY()是X标记处的一个"fire-trap"。
if isLeft and isBelow:
hero.buildXY("fire-trap", 20, 17)
# 如果敌人在下方 (isBelow) 和右边 (isRight):
# buildXY()是X标记处的一个"fire-trap"。
if isRight and isBelow:
hero.buildXY("fire-trap", 60, 17)
hero.moveXY(40, 34)
else:
hero.moveXY(40, 34)
本攻略发于极客战记官方教学栏目,原文地址为:
https://codecombat.163.com/news/jikezhanji-shamohexin
极客战记——学编程,用玩的