同志们,雄安新区都成立了,你们说,中国的变化快不快?!
在这样一个蕴含无数机会的变化面前,我们常常误以为自己可以抓住其中一些机会,然后却忘了努力。
孩子们也是如此。
不要让孩子们错失机会,那就赶紧跟上步伐,学习编程吧!
在未来几次教程里,我们学习如何利用“直到”(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关
我们看看界面。
在左侧的画面里,小老鼠需要捡起火柴,放在火柴堆里。
右侧是代码框,代码如下:
我先解释一下代码:
第1,2行:直到靠近火柴之前,走1步;
第3行:捡起火柴;
第4,5行:直到靠近火柴堆之前,走1步;
很明显,小老鼠走到火柴堆之后,需要把火柴放下,于是代码可以像这样补充:
第6行:放下火柴。
点击看看效果吧!
三星通关!
第87关
上图中猴博士的意思是,near这个代码可以返回一个结果,如果小老鼠靠近目标,返回yes,否则返回no。这个返回的结果需要用say来表示出来。
在左侧的画面里,依然是和上一关一样的画面,小老鼠依然需要捡起火柴放在火柴堆上。
在右侧的代码框里,我们看到如下代码:
在上述的第3行代码里,near match会一直返回no,直到小老鼠接近火柴之后。
第4,5行明显有问题,捡起来直接就放下的,那是深蹲。所以我们要把第5行代码放在第8行。
更改后的代码如下:
点击运行,看看效果吧!
三星通关!
第88关
until指令是在不知道要循环多少次的情况下使用的,只有当until后面的条件得到满足的情况下,循环才会终止。
在左侧的画面里,小老鼠,火柴,火柴堆不再在同一条水平线上,所以小老鼠再捡起火柴之后需要转向火柴堆,然后再走到火柴堆那放下火柴。
代码如下:
我们需要在第3行写上grab()指令,让小老鼠捡起火柴。
在第4行写上turnTo pile指令,让小老鼠转向火柴堆。
在第7行写入drop()指令,让小老鼠放下火柴。
我给出的代码如下:
点击运行,看看效果吧!
三星通关!
第89关
在这一关里,内容基本和前三关一致。
故事内容依然是:小老鼠需要把火柴放在火柴堆上。
我们看看代码:
看完代码,我们就发现问题了:第4行的指令是面向火柴堆,但是小老鼠在面向火柴堆之后,居然只走了4步。
难道小老鼠会大跨步向前进?难道火柴堆会自动漂移?
所以我们可以这样改:
点击运行,看效果:
可惜,最后只得到两颗星!
提示是:用6行代码解决问题。
好吧,我们可以不用until,直接把step 4改成step distanceTo pile即可。
代码如下:
点击运行,看效果!
三星通关!
第90关
猴博士是不是夸错了,我觉得应该夸我们聪明的孩子们啊~
原来,这一关,蚂蚁会拖着火柴走,让小老鼠和火柴之间的距离时刻变化。
在左侧的界面里,我们看到老鼠没有直接面向火柴。右侧的代码框里的代码如下:
我们需要把turn left放在最前面,把step 1 放在until 下面,原因是,在接近火柴之前不停左转是没有用的。
之后的代码和前几关一样,在小老鼠从蚂蚁手里抢到火柴之后,就要让小老鼠面向火柴堆,然后走向火柴堆,放下火柴。这些动作可以用如下的第5-7行代码实现。
点击运行,看看效果吧!
三星通关!
后记:
今天你学会使用until了吗?
下一次,我们会在新的关卡中继续学习和使用until!