上周小猿亲身体验了ThinkFun新款编程玩具系列——//CODE的第一款:On The Brink,今天带你玩转//CODE的第二款:Rover Control。
Rover Control是一个火星探测模拟游戏,可以帮助孩子掌握编程中的IF/ELSE判断语句以及循环。
1
产品清单
探测器:
火星探测的主力,能够依据编程路线探测。
充电站/数据上传站:
一些危险的探测,需要探测器停在充电站/数据上传站,充电或上传数据。
开始/结束令牌:
火星探测开始和结束的位置。
样本储存卡:
高级任务要求收集一定量(最多5个)的样本,通过移动黑色塑料标签,记录样本数量。
和On The Brink一样,挑战手册的40关,也是按颜色来区分难度。
1-10关为绿色,对应绿色标记的地形图,只有一个探测器,也不需要充电站和数据上传站;
11-20关为黄色,对应黄色标记的地形图,仍然是一个探测器,大部分关卡不需要数据上传;
21-30关为蓝色,对应蓝色标记的地形图,开始出现样本收集任务;
31-40关为红色,对应红色标记的地形图,两个探测器都要用上。
2
简单关卡示范
以第一关为例:
左上角是此次闯关要用到的指令卡,包括一个名为R1的探测器,可以看到检查点(checkpoints)、加油站、数据上传站都是灰色的,表示这次没有检查、加油和数据上传任务。
右上角给出了起点和终点,以及部分线路。
下方是需要执行的线路顺序,即从起点到终点必须是红-蓝-红的顺序。
对照关卡示意图,找到绿色标识的地形图,将紫色探测器R1和起点放置于数字7,终点放置于数字9,用蓝色记号笔把固定线路画出来。
玩家的任务是在地形图上用彩色笔把路径涂上颜色,使得探测器可以按照规定好的路线(course)从起点走到终点。
注意:每条路径只能涂一种颜色,且不能修改挑战手册上已给出的路径颜色。
观察起点7和终点9,会发现要使探测器从7走到9,中间经过3条路径,显然只有一种走法:7→4→1→9,把这3条路径分别涂上红、蓝(初始已涂好)、红,就算是过关啦。
如果不放心,可以查阅答案手册。
3
复杂关卡示范
这次我们找到了一个能同时用上加油站、数据上传站、样本储存卡的关卡来示范。
看第27关:
这个关卡用到一个探测器R1,其中11、6、5、4、10是检查点,4、5是加油站,6、10是数据上传站,地形图是3。
在地形图上摆放好相应的指令卡:
如图将探测器R1和起点放置于11,终点放在1,4和5放充电卡,6和10放数据传输卡。
下面,重点来了,如何根据挑战手册给出的路线条件,找到正确的路径呢?
关于检查点,多说几句,探测器必须从第一个开始按顺序经过,具体到第27关,就是11→6→5→4→10。
这个路线图是什么意思呢?
它表示探测器从11出发,第一件事就是样本储存决策,能看到它有两个去向,一个是拇指朝上,表示收集齐5个样本,指向终点;一个是拇指朝下,表示没收集齐5个样本,需要继续收集,所以指向样本+1;
接下来出现了一个位置标,也就是检查点,如果目前所在的位置为检查点,判断是否有充电卡,拇指朝上表示有充电卡,执行先红后绿的线路,拇指朝下表示没有充电卡,继续检测是否有数据上传卡,有就走先绿后蓝线路,没有走先蓝后红线路,目标是到达下一个检查点。
执行完毕可以看到虚线箭头,都指向样本储存决策,即继续判断是否收集齐5个样本。
现在开始移动探测器。
数字11是检查点,收集1个样本后,发现这里既没有充电卡也没有数据上传卡,走先蓝后红线路,目标是检查点6,也是11→9为蓝色,9→6为红色。
循环进入样本数量检测,小于5,继续收集样本+1,因为6有数据上传卡,没有充电卡,走先绿后蓝线路,目标是检查点5,也就是6→3为绿色,3→5为蓝色。
循环进入样本数量检测,小于5,继续收集样本+1,实际收集了3个样本,因为5有充电卡,走先红后绿线路,目标是检查点4,也就是5→2为红色,2→4为绿色。
回到样本数量检测,3
我们先试着走4→7→10,4→7为红色,7→10为绿色。
回到样本数量检测,4
如图,有没有发现什么问题?
10连接了两条绿色的路线,这在游戏中是不允许的。
此路不通,换条路走!选择4→0→10这种走法,4→0为红色,0→10为绿色。回到样本数量检测,集齐5个,到达终点。
最后的路线就是这样:
突然有一种被自己拯救的感觉。
4
孩子能学到什么
一个程序员爸爸在带领自己5岁半儿子试玩后,总结道:
这款游戏的程序规则比上一款要复杂很多,对于孩子来说,就算不玩解题,如果能按照画好的路径正确说出程序的运行过程,也是非常不容易的一件事。
在这款游戏中,会大量运用回溯(backtracking)的方法。回溯不但是一种人类思考问题的方法,同时也是一种重要的计算机算法(algorithm)。
这款游戏的解谜过程就是从若干种可能的路径中搜索出正确的一种,而在搜索的过程中我们会遇到分叉,也就是从某一步开始可能有几种不同的走法,需要从其中一种开始尝试,如果尝试到最后不成功,就需要回退到分叉的地方,继续尝试其他的分叉,直到最终找出正确的解。这种方法也叫深度优先搜索(depth-first search, DFS)。
游戏题目中给出的“路线”,实际上就是真正的编程中经常使用的“流程图”(flow chart),通过玩这款游戏,孩子就潜移默化地记住了流程图是长啥样的,是干啥用的,即便将来不去学编程,流程图在很多其他方面也都可以派上用场,比如项目管理、活动组织等等。
领取专属 10元无门槛券
私享最新 技术干货