少儿编程游戏CodeMonkey通关攻略:第86-90关
同志们,雄安新区都成立了,你们说,中国的变化快不快?!
在这样一个蕴含无数机会的变化面前,我们常常误以为自己可以抓住其中一些机会,然后却忘了努力。
孩子们也是如此。
不要让孩子们错失机会,那就赶紧跟上步伐,学习编程吧!
在未来几次教程里,我们学习如何利用“直到”(until)来完成一些不知道要循环多少次的循环指令。
知识点
until是“直到”的意思。举个例子,“I will not wake up until 7 a.m.” 就是我直到早上7点才会起床。
在CodeMonkey里,我们可以用“until near match”来表示“直到接近火柴”。
完整的用法是:
until near match
step 1
表示“直到接近火柴之前,我们要(不停地)走1步。”
也就是说,在没有达到火柴之前,我们不能停下,每次都要走1步。当然,这里的火柴(match)也可以是别的对象。
下面跟着我一起闯关吧!今天我们一起来玩玩第86-90关,看看怎么用until玩得更有意思。
第86关
![](https://img.haomeiwen.com/i2210978/a29841dca2d9c903.png)
我们看看界面。
![](https://img.haomeiwen.com/i2210978/805b6b08405125cc.png)
在左侧的画面里,小老鼠需要捡起火柴,放在火柴堆里。
右侧是代码框,代码如下:
![](https://img.haomeiwen.com/i2210978/b15ad0db486ddfe9.png)
我先解释一下代码:
第1,2行:直到靠近火柴之前,走1步;
第3行:捡起火柴;
第4,5行:直到靠近火柴堆之前,走1步;
很明显,小老鼠走到火柴堆之后,需要把火柴放下,于是代码可以像这样补充:
![](https://img.haomeiwen.com/i2210978/d50317b83bad1e06.png)
第6行:放下火柴。
点击看看效果吧!
![](https://img.haomeiwen.com/i2210978/2a06e6918eb49934.gif)
三星通关!
![](https://img.haomeiwen.com/i2210978/df696f8adfec0f14.png)
第87关
![](https://img.haomeiwen.com/i2210978/907e1937f60eed9a.png)
上图中猴博士的意思是,near这个代码可以返回一个结果,如果小老鼠靠近目标,返回yes,否则返回no。这个返回的结果需要用say来表示出来。
![](https://img.haomeiwen.com/i2210978/4b61a4a4ea71708f.png)
在左侧的画面里,依然是和上一关一样的画面,小老鼠依然需要捡起火柴放在火柴堆上。
在右侧的代码框里,我们看到如下代码:
![](https://img.haomeiwen.com/i2210978/06d167f13b61272f.png)
在上述的第3行代码里,near match会一直返回no,直到小老鼠接近火柴之后。
第4,5行明显有问题,捡起来直接就放下的,那是深蹲。所以我们要把第5行代码放在第8行。
更改后的代码如下:
![](https://img.haomeiwen.com/i2210978/be8b80972bec14a8.png)
点击运行,看看效果吧!
![](https://img.haomeiwen.com/i2210978/2aeeeb06bec970f8.gif)
三星通关!
![](https://img.haomeiwen.com/i2210978/790e71e480345cc7.png)
第88关
![](https://img.haomeiwen.com/i2210978/d02460c64c232630.png)
until指令是在不知道要循环多少次的情况下使用的,只有当until后面的条件得到满足的情况下,循环才会终止。
![](https://img.haomeiwen.com/i2210978/839558241ff4c2f7.png)
在左侧的画面里,小老鼠,火柴,火柴堆不再在同一条水平线上,所以小老鼠再捡起火柴之后需要转向火柴堆,然后再走到火柴堆那放下火柴。
代码如下:
![](https://img.haomeiwen.com/i2210978/2991648ca622a5d8.png)
我们需要在第3行写上grab()指令,让小老鼠捡起火柴。
在第4行写上turnTo pile指令,让小老鼠转向火柴堆。
在第7行写入drop()指令,让小老鼠放下火柴。
我给出的代码如下:
![](https://img.haomeiwen.com/i2210978/7349e6c922dfb5bf.png)
点击运行,看看效果吧!
![](https://img.haomeiwen.com/i2210978/abe870bee007ad19.gif)
三星通关!
![](https://img.haomeiwen.com/i2210978/0a4f9f27330c7b3a.png)
第89关
![](https://img.haomeiwen.com/i2210978/eb57ff14e30ff921.png)
在这一关里,内容基本和前三关一致。
![](https://img.haomeiwen.com/i2210978/f81e5e74f1869423.png)
故事内容依然是:小老鼠需要把火柴放在火柴堆上。
我们看看代码:
![](https://img.haomeiwen.com/i2210978/678ba6544f29bcd8.png)
看完代码,我们就发现问题了:第4行的指令是面向火柴堆,但是小老鼠在面向火柴堆之后,居然只走了4步。
难道小老鼠会大跨步向前进?难道火柴堆会自动漂移?
所以我们可以这样改:
![](https://img.haomeiwen.com/i2210978/bcc911dd63b74e72.png)
点击运行,看效果:
![](https://img.haomeiwen.com/i2210978/4fadec99e64ad3bf.gif)
可惜,最后只得到两颗星!
![](https://img.haomeiwen.com/i2210978/b93f44a57703b4ca.png)
提示是:用6行代码解决问题。
好吧,我们可以不用until,直接把step 4改成step distanceTo pile即可。
代码如下:
![](https://img.haomeiwen.com/i2210978/e380e5a2440e6115.png)
点击运行,看效果!
![](https://img.haomeiwen.com/i2210978/8766cb23e735f853.gif)
三星通关!
![](https://img.haomeiwen.com/i2210978/4802e590ff70ce88.png)
第90关
![](https://img.haomeiwen.com/i2210978/4896697c9c3d4d8b.png)
猴博士是不是夸错了,我觉得应该夸我们聪明的孩子们啊~
原来,这一关,蚂蚁会拖着火柴走,让小老鼠和火柴之间的距离时刻变化。
![](https://img.haomeiwen.com/i2210978/83de1e6a08b4feb3.png)
在左侧的界面里,我们看到老鼠没有直接面向火柴。右侧的代码框里的代码如下:
![](https://img.haomeiwen.com/i2210978/a781b89bb17d035d.png)
我们需要把turn left放在最前面,把step 1 放在until 下面,原因是,在接近火柴之前不停左转是没有用的。
之后的代码和前几关一样,在小老鼠从蚂蚁手里抢到火柴之后,就要让小老鼠面向火柴堆,然后走向火柴堆,放下火柴。这些动作可以用如下的第5-7行代码实现。
![](https://img.haomeiwen.com/i2210978/efe8df55d4b26be2.png)
点击运行,看看效果吧!
![](https://img.haomeiwen.com/i2210978/d37c1afa90fe3850.gif)
三星通关!
![](https://img.haomeiwen.com/i2210978/bd927a52648bb631.png)
后记:
今天你学会使用until了吗?
下一次,我们会在新的关卡中继续学习和使用until!