购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.4 关卡案例

老师,命令格式和编译过程我都知道了。

你真棒!

老师,我想练习一下,看掌握得怎么样。

好的,那就通过几个关卡来检验是否学会了命令。

2.4.1 前进收集

关卡说明

关卡编号:1-1

关卡难度:*

通关条件:南瓜1个,开关0个。

关卡目标:让主角向前移动,收集前面的南瓜。

关卡1-1场景图如图2.5所示。

图2.5 关卡1-1场景图

要完成关卡目标,主角要前进到南瓜的位置,然后收集关卡中唯一的南瓜。

代码

move();

move();

move();

take();

要完成关卡目标,需要使用到move()和take()命令。南瓜在主角前方,需要使用move()命令向前移动3个砖块才能到达南瓜所在位置,然后再使用take()命令收集南瓜,如图2.6所示。

在主角移动过程中遇到楼梯时,move()命令会自动爬上或爬下楼梯。

上面给出的代码可以完成本关的关卡目标,让主角前进到南瓜的位置并进行收集。图2.6中的蓝色箭头表示主角的移动轨迹,从平面俯视效果来看,可以忽略楼梯的存在。

后面的每个关卡案例中,都会给出完成关卡的代码。这些代码并不是所谓的标准答案,因为有很多种方法可以完成关卡目标,这里只给出其中一种,供大家参考。

图2.6 关卡1-1通关路线图

2.4.2 首次左转

关卡说明

关卡编号:1-2

关卡难度:*

通关条件:南瓜1个,开关0个。

关卡目标:使用前进和左转命令,收集关卡的南瓜。

关卡1-2场景图如图2.7所示。

南瓜在主角的前方左侧,想一想使用几个前进命令可以走到适当的位置左转,左转后还要在继续前进几个砖块才能到达南瓜的位置?到达南瓜所在的位置后,应该调用什么命令收集南瓜呢?

图2.7 关卡1-2场景图

代码

move();

move();

left();

move();

move();

take();

这一关要用到move()、left()和take()命令。主角需要使用move()命令向前移动两个砖块,此时主角可以使用left()命令向左转向,然后再使用move()命令向前移动两个砖块,到达南瓜位置后使用take()命令收集南瓜,如图2.8所示。

图2.8 关卡1-2通关路线图

2.4.3 打开开关

关卡说明

关卡编号:1-3

关卡难度:*

通关条件:南瓜1个,开关1个。

关卡目标:不仅要收集南瓜,还要打开开关。

关卡1-3场景图如图2.9所示。

图2.9 关卡1-3场景图

本关卡的目标是收集南瓜,还要打开开关。主角前进的路线上可以经过开关和南瓜,仔细思考一下要用到哪些命令完本关的目标。

场景中有1个南瓜和1个开关,要用到4个命令,包括move()、left()、toggle()和take()。

南瓜和开关都在主角的左侧,首先使用move()命令移动到需要转向的砖块位置,然后使用left()命令左转。在遇到南瓜的时候,使用take()命令收集南瓜;在遇到开关的时候,因为开关是“关闭”的状态,因此需要使用toggle()命令将其打开。关卡1-3通关路线图如图2.10所示。

代码

move();

move();

left();

move();

take();

move();

left();

move();

toggle();

图2.10 关卡1-3通关路线图

2.4.4 使用传送门

关卡说明

关卡编号:1-4

关卡难度:*

通关条件:南瓜2个,开关1个。

关卡目标:通过传送门收集南瓜。

关卡1-4场景图如图2.11所示。

本关卡的目标是通过传送门收集南瓜,并打开开关。有一个南瓜在孤岛上,需要使用传送门才能到达孤岛。

传送门是本关出现的一个新物品,如图2.12所示。传送门可以将主角从一个位置传送到另一个位置,因此传送门都是成对出现的。需要注意,传送门传送后不会改变主角的方向。

图2.11 关卡1-4场景图

图2.12 传送门

代码

move();

move();

toggle();

left();

move();

move();

take();

move();

move();

move();

take();

本关要使用move()、left()、toggle()和take()命令,需要收集2个南瓜和打开1个开关。

主角在起始位置向前移动2格,在打开开关后,左转并继续前进。在收集南瓜后,进入传送门。出传送门后继续前进,走到南瓜的位置收集南瓜,这样就可以用最快的方式完成关卡任务。关卡1-4通关路线图如图2.13所示。

图2.13 关卡1-4通关路线图

2.4.5 找出问题

关卡说明

关卡编号:1-5

关卡难度:*

通关条件:南瓜1个,开关1个。

关卡目标:找出代码中的错误并修改。

关卡1-5场景图如图2.14所示。

本关给出的代码有些是有错误的。要想知道错误出现在哪里,最快捷的方式就是运行代码,看看结果如何。代码右上角有一个“虫子”,表示这里的代码有错误。

图2.14 关卡1-5场景图

知识小课堂

代码中存在的错误通常叫作bug,bug的中文意思是“虫子”。无论是初学者还是经验丰富的专业开发人员,在书写代码命令时都会出现错误。bug会让代码不能正确运行,因此需要找到bug,并尝试修复bug。

代码

move();

left();

move();

move();

toggle();

move();

take();

有问题的代码没有让主角走到应该到达的位置,而是走了一条错误的路线,这条路线没有经过南瓜和开关。

需要找出不正确的命令,尝试调整这些命令的位置,或者添加某些命令,让主角可以到达正确的路线上。

代码

问题出在主角提前了一个砖块左转,导致走错了路线,最终没有经过开关和南瓜。因此,在左转命令left()前面增加一个前进命令move(),就可以让主角打开开关和采集到南瓜了。

关卡1-5通关路线图如图2.15所示。

图2.15 关卡1-5通关路线图

2.4.6 调整代码顺序

关卡说明

关卡编号:1-6

关卡难度:*

通关条件:南瓜1个,开关2个。

关卡目标:调整代码顺序来拿到南瓜。

关卡1-6场景图如图2.16所示。

图2.16 关卡1-6场景图

本关卡要收集一个南瓜,并打开关闭的开关。提示一下,有一个开关已经打开,可以不用做任何操作。

在本关中给出了一部分代码,这些代码也是有错误的,代码命令有两处的顺序出现问题,需要大家重新排列命令的顺序。要是知道错误出现在哪里,最快捷的方式就是运行代码,看看结果如何。

代码

move();

move();

toggle();

move();

left();

move();

move();

move();

take();

知识小课堂

在修改代码中错误的时候,如何快速地把代码修改好呢?最好的方法就是做出每项更改后都运行一次代码,确保修改的代码符合自己的预期。别担心尝试的次数太多,多次尝试是找到问题的最好方式。

代码

运行后,可以发现主角走了一条错误的路线,经过“打开”状态的开关,最后停止在远处的砖块位置上。正确的方法是调整代码中toggle()和left()命令的位置,让主角经过“关闭”状态的开关和传送门,走到最远处的、有南瓜的砖块上。关卡1-6通关路线图如图2.17所示。

图2.17 关卡1-6通关路线图

2.4.7 最短路线

关卡说明

关卡编号:1-7

关卡难度:*

通关条件:南瓜1个,开关1个。

关卡目标:找出完成任务的最短路线。

关卡1-7场景图如图2.18所示。

本关比前几关更大、更复杂,关卡中有多个传送门,主角通过使用不同的传送门,可以产生多种过关的方案,大家尝试让主角走的路线越短越好。

图2.18 关卡1-7场景图

使用不同的传送门可以产生不同的行进路线,这里提供两种方案:一种是先使用蓝色传送门去打开开关,然后使用绿色传送门去收集南瓜的方案;另外一种是先收集南瓜,然后只使用绿色传送门去打开开关的方案。大家可以比较一下,哪种方案主角的路线比较短,同时代码也更加简洁。

知识小课堂

在以后的关卡中会出现很多传送门,大家要注意一下传送门的颜色,关卡中有不同种颜色成对的传送门,如绿色传送门和蓝色传送门,传送门之间的传送是要对照颜色的,就是说,从蓝色传送门进入,只能从另一个蓝色传送门出来。

代码

move();

move();

move();

take();

move();

move();

move();

move();

toggle();

很明显,只使用绿色传送门的方案更加简洁。主角先收集前方的南瓜,然后通过绿色传送门到达上面的平台,走到开关位置打开开关。关卡1-7通关路线图如图2.19所示。

图2.19 关卡1-7通关路线图 VoBGml1NeFEdb6yQm1uENmo8r4M0KR4I1LBq816kBq/ni7br/5RkwMsHN+6RWLsJ

点击中间区域
呼出菜单
上一章
目录
下一章
×