今天我们一起玩until循环的第91-95关。
第91关
我们来看看这一关的画面。
在左侧的画面框里,小老鼠面向火柴,但火柴在蚂蚁手里。我们来想象一下接下来会发生什么:小老鼠需要从蚂蚁手里抢走火柴,然后转向火柴堆,走到那里,放下火柴。
我们看看右侧的代码框。
空空的,一定是打开方式不对。
第二次打开后,依然还是空的。
看来这次是要我们自己写出整个代码了。
按照以上分析,我给出了如下的代码示例:
点击运行看效果!
三星通关!
第92关
在这一关里,小老鼠会遇到一个新的麻烦:过河,但不通过木桥。
我们看看左侧的画面框,因为小老鼠无法越过草丛,所以无法经过木桥过河。它过河的唯一方式就是通过小乌龟,所以我们需要小乌龟先游到小老鼠的面前。
再来看看右侧的代码。
第1,2行:在小乌龟接近木桥之前,小乌龟不停地旋转1度。
整个代码的错误就在这里,应该是“小乌龟不停地向木桥走1步”,所以应该把“turtle.turn 1”改成“turtle.step 1”。
第3行:小老鼠捡起火柴。
第4行:小老鼠走向火柴堆。
第5行:小老鼠放下火柴。
我们修改后的代码如下:
点击运行看效果:
三星通关!
第93关
我们先看看画面和提供的代码。
这一关与第91关的区别是,在91关里,蚂蚁的运动轨迹和小老鼠在同一个方向上。而在这一关里,小老鼠横着走,而小老鼠朝向上方。所以,小老鼠需要在蚂蚁移动的过程中,不停地改变自己的朝向,从而一直向火柴走去。
系统给出的代码如下:
只需要在第3行里加上“step 1”就可以了。
点击运行看看效果。
三星通关!
第94关
在这一关里,我们需要用函数来包装until指令以及相关的操作。
在左侧的画面框里,小老鼠依然朝向上方,而蚂蚁拖着火柴依然是水平移动。
在右侧的代码框里,系统给出的代码如下:
在代码框里,第1-2行,我们要定义一个chase(追逐)函数,这个函数的对象是m,在接近m之前,我们需要小老鼠一直调整方向,面向火柴,并且向火柴走去。
在第4行里,“chase match”这行代码让小老鼠追逐火柴;
在第6行里,“chase pile”这行代码让小老鼠追逐火柴堆。
这里我们要注意的是,小老鼠既可以追逐运动的火柴,也可以追逐不动的火柴堆。
我给出的代码如下:
点击运行看效果!
三星过关!
第95关
如果小老鼠遇到很多运动中的火柴,它该怎么办呢?
在左侧的画面框里,我们可以看到这一关与上一关的区别是,小老鼠需要追逐三根火柴,而不是一根。很自然地,我们可以运用for循环处理这么多跟火柴,而追逐每根火柴可以用chase函数来执行。
我们接着看看右侧的代码框:
在第1-3行里,我们需要定义chase函数,让小老鼠追逐对象m(m是画面框里的每根火柴)。
什么是追逐呢?就是火柴在哪里,小老鼠就一直看着火柴(turnTo m),并且向火柴追去(step 1),直到追上(near)火柴了。
我们需要在第2-4行里写入如下的代码:
点击运行看效果!
三星通关!
今天的通关攻略就介绍到这里了。
这5关里,我们主要学会了如何处理火柴被蚂蚁拖着不停地运动的场景,那就是让小老鼠不停地面向火柴(turnTo match),走向火柴(step 1)。这些操作可以用一个chase函数来包装。
下次,我们将更新第96到100关,这是until循环的最后5关。