大家五一快乐!
今天我们继续玩转“if王国”!
这一篇文章里,我们将一起闯Codemonkey的第106-111关!
本教程大约1400字,阅读时间5-10分钟。
第106关
banana.frozen()这个函数会返回“yes”或者“no”的结果,如果返回“yes”,就继续执行if判断语句里的代码;否则就跳出if判断语句。
我们看看左侧的画面,小山羊对着一个被冻住的香蕉,小猴子面对着香蕉束手无策。
小猴子正等着山羊撞碎冻住香蕉的冰块,然后走过去吃到香蕉。
在右侧的代码块里,第1,3行代码都是让猴子说出香蕉是否被冻住的状态。第2行代码是让山羊撞击冰块,让香蕉不被冻住。
我们可以删掉第1,3行,因为它们是没必要的代码。然后再加上让猴子走向香蕉的代码,如下:
点击运行看效果!
三星通关!
第107关
使用if判断语句可以让山羊判断出哪个香蕉被冻住,哪个香蕉没有被冻住。
为什么要判断呢?
因为如果山羊撞击了没有被冻住的香蕉,这个香蕉就会损坏,无法食用!
左侧的画面和上一关的很像,在右侧的代码框里,出现了if判断语句。
因为香蕉被冻住,所以代码框里第1行if banana.frozen()中的“banana.frozen()”返回yes,if判断语句里的goat.hit()函数会被执行,也就是山羊撞碎香蕉周围的冰块。
但是这样之后呢?我们需要小猴子走向香蕉,所以在第3行里需要加上“goto banana”的语句。
点击运行,看效果吧!
三星通关!
第108关
但是if判断语句不一定就会返回yes!
在左侧的画面框里,山羊面对的是一个没有被冻住的香蕉,我们先看看右侧代码框里的代码:
那么banana.frozen()返回的是no,这就意味着if判断语句里的
“goat.goto banana”以及“goat.hit()”就不会被执行。
代码会跳过第2,3行的代码,直接执行第5行的代码。
但是第5行的代码不是我们想要的,我们希望小猴子走向香蕉,所以代码可以改成如下的版本:
点击运行,看效果!
三星通关!
第109关
if判断语句可以在for循环中使用!
在左侧的画面框里,山羊面对四个香蕉,有两个是被冻住的,有两个是没有被冻住的。
在右侧的代码框里,我们使用for循环是为了依次处理决每一个香蕉。
我把这4行代码翻译成人话:对于每个香蕉b(第1行),如果香蕉是被冻住的(第2行),小猴子说“Brrr”(第3行),小猴子走向香蕉b(第4行)。
这4行代码里有一个漏洞,就是如果香蕉b是被冻住的,小猴子说话是没有用的,要让小山羊去撞击这个香蕉b,小猴子才能吃到正常的香蕉。所以我们应该把第3行改为:
点击运行,看效果!
三星通关!
第110关
在这一关里,我们面对的依然是两种香蕉,一种被冰块冻住,一种没有被冰块冻住。
我们依然可以把上一关的代码用在这一关:
点击运行看效果吧(时间太长,我只放了一部分)!
三星通关!
第111关
这是if判断语句的最后一关了。这一关里,我们见到了老朋友小乌龟。
看看这一关的界面:
在左侧的画面框里,山羊站在乌龟身上,抛开乌龟是否能承受山羊的重量不说,山羊可以依靠乌龟依次对每个香蕉进行判断,如果香蕉被冻住,山羊走向香蕉并撞碎冰块。
右侧的代码框里,我们看到第1行依然是用for循环分别处理每个香蕉,第2行是说出香蕉b是否被冻住的状态,第3行是让乌龟前进5步。
这显然是不够的。
我们需要把第2行改成if判断语句,在if判断语句里,我们还需要加入让山羊撞击冰块的代码。
在if判断语句之后,我们需要让小猴子走向香蕉。在处理完当前的香蕉之后,我们需要乌龟前进5步,开始处理了下一个香蕉。
我修改后的代码如下:
点击运行,看效果!
三星通关!
总结:
经过这几期的教程,我们学会了用if判断语句判断决定是否执行某个操作,增加了我们处理不同情形的灵活性。
下期预告:
下一期攻略里,我们将学习使用if判断语句里的另一个关键成员:else(否则)语句!