网易官方极客战记(codecombat)攻略-森林-以静制动stillness-in-motion
Posted codecombat
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网易官方极客战记(codecombat)攻略-森林-以静制动stillness-in-motion相关的知识,希望对你有一定的参考价值。
(点击图片进入关卡)
通过使用嵌套 if 语句停留在中间。
简介
将每个 if/else 考虑成一个容器,其中又可以容纳另一个 if/else 结构!参见:
enemy = hero.findNearestEnemy()
if enemy:
if enemy.type == "munchkin":
hero.say("我看到一个矮人!")
else:
hero.say("我看见其他类型的敌人!")
else:
hero.say("我没有看见任何敌人...")
缩进 一定要小心。
默认代码
# 你可以将一个if语句放到另一个if语句当中。
# 你必须注意这些if语句是如何互相影响的。
# 请确保代码缩进正确!
# 从外层if/else结构开始会有帮助
# 使用注释为内层if/else占位预留空间:
while True:
enemy = hero.findNearestEnemy()
# 如果有敌人出现,那么就...
if enemy:
# 使用distanceTo创建一个距离变量
# 如果敌人与你的距离小于5米,那么就攻击它
# 否则(这名敌人还离得很远),就使用shield
pass
# 否则(没有敌人)...
else:
# …那么,回到X位置。
hero.moveXY(40, 34)
概览
在这一关中,为了不让猎头者看见你,你必需停留在中间的区域!
你将会使用 嵌套 if 语句。
在写嵌套 if 语句时,你需要仔细注意如何设置程序的流程。
如果你的 if 语句很复杂,你可以一步步来,先用注释写下想法,然后再修改成代码。 比如在这一关,我们可以先开始写以下内容:
#如果敌人出现,然后....
# 做些什么
# 否则 (没有敌人的话)...
# 就移回到X
下一步,修改注释并把想法转成 if/else 语句和移动函数的代码:
if enemy:
# 做些什么
else:
hero.moveXY(40, 34)
现在可以再细化 "做些什么" 那句,添加更多详细的想法
if enemy:
# 如果敌人在5米内,那么就攻击他
# 否则 (敌人在远处外), 使用shield()函数防御
else:
hero.moveXY(40, 34)
最后,把 if/else 语句中的注释转化成代码,并且确保缩进正确:
if enemy:
if hero.distanceTo(enemy) < 5:
hero.attack(enemy)
else:
hero.shield()
else:
hero.moveXY(40, 34)
还有,在 while true 循环这样的循环语句下,if 和 else 等语句也要缩进:
while True:
enemy = hero.findNearestEnemy()
if enemy:
if hero.distanceTo(enemy) < 5:
hero.attack(enemy)
else:
hero.shield()
else:
hero.moveXY(40, 34)
小贴士: 你可以选中一块代码,然后按 Tab 增加缩进,或者按 Shift+Tab 减少缩进。
以静制动 解法
# 你可以将一个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:
hero.shield()
# 否则(没有敌人)...
else:
# …那么,回到X位置。
hero.moveXY(40, 34)
以上是关于网易官方极客战记(codecombat)攻略-森林-以静制动stillness-in-motion的主要内容,如果未能解决你的问题,请参考以下文章
网易官方极客战记(codecombat)攻略-森林-村庄守护者
网易官方极客战记(codecombat)攻略-森林-If 的盛宴
「网易官方」极客战记(codecombat)攻略-森林-小心陷阱
网易官方极客战记(codecombat)攻略-森林-Else 之战elseweyr
网易官方极客战记(codecombat)攻略-森林-巡逻兵克星A
「网易官方」极客战记(codecombat)攻略-森林-致命追随