
第一关 发出命令
▲任务描述
使用Swift命令,让Byte行动起来,去收集宝石,游戏第一关界面如图2.1所示。

图2.1 游戏第一关界面

界面介绍视频
小贴士
图2.1中的①显示任务状态。在这一关中总共需要收集到1枚宝石,目前已经收集到了0枚。
蓝色框区域:任务的说明和任务的提示。
绿色框区域:任务场景展示区域,用手指在此区域触屏滑动时,可以360度旋转场景,以更直观地观察。
红色框区域:输入代码的区域。用手指点击该区域空白部分时,页面底部会自动浮现命令栏,里面有此关卡中可用的相关联命令,如图2.2所示。

图2.2 浮现命令栏
▲任务分析
第一关比较简单,根据场景地图可知,只要Byte向前走3步,就能到达宝石所在位置,然后拾取宝石即可。
▲解决方案
本关卡给出了两个可用命令:moveForward()和collectGem()。先来试试每个命令的作用和效果。
(1)命令m o v e F o r w a r d ()
点击代码区域的空白处,选择浮出的命令栏中的moveForward()命令,然后点击
地图下方的“运行我的代码”图标,看看执行命令的效果吧。
命令效果:Byte向前行进1步,如图2.3所示。

图2.3 命令moveForward()运行效果
小贴士
①一步为一个方块。
②场景中的台阶部分都不算入步数。
(2)命令c o l le c t G e m ()
为了更好地观察collectGem()的命令效果,最好是代码区中只有这一条命令,避免其他命令语句干扰。因此,需要先将前面输入的moveForward()命令删除。
在Swift Playgrounds中删除一条命令也比较简单,有3种方法:
· 选取要被删除的命令,这条命令的上方将弹出一个菜单(如图2.4所示),然后选择“删除”即可。

图2.4 选中命令后弹出的菜单
· 选取要被删除的命令,然后点击浮出命令栏靠右边的删除图标,可以把选中的命令一次性删除。
· 点击要删除的命令后方空白处,这时处于代码编辑状态,然后点击浮出命令栏的删除图标,每点击一下会删除一个字符。这种方式需要重复点击删除图标,直到把命令语句删光为止。
删除已有的moveForward()命令语句后,输入collectGem()命令语句,然后运行,观察执行效果。
命令效果:Byte跳跃起来双手去抓东西,如图2.5所示。由于该位置并没有宝石存在,因此没有收集到宝石。

图2.5 collectGem()命令运行效果
编程思维
观察moveForward()、collectGem()这两个命令,你发现了什么?
这些命令是由有实际含义的多个单词组合在一起构成的,并且第一个单词以小写字母开始,第二个单词或者之后的单词通常是以大写字母开头,这样看上去像骆驼峰一样此起彼伏,这种命名方法称为“驼峰命名法”,可以增强可读性。命令都以括号结尾。
在熟悉了两个命令之后,根据前面的任务分析,Byte站在起点处,只需要前进3步,到达红宝石的方块,然后跃起来获得红宝石,应该就能完成任务。一个供参考的命令组合解决方案如下。

运行的每一步效果如图2.6所示,经过3步向前行走,最后在宝石下方跳起取到宝石,完成任务。

图2.6 解决方案每一步的运行效果

运行微视频
▲任务小结
①熟悉了Swift Playgrounds的编程环境。
②学会使用moveForward()命令控制角色前进。
③学会使用collectGem()命令控制角色获取宝石。
④学会组合多个命令去完成复杂一点的任务。
小贴士
这里给出的解决方案仅供参考,并不是唯一的。每一关都有可能有多种解决方案。我们需要寻找比较好的解决方案。鼓励大家充分发挥自己的创意和想象力来设计自己的方案。
▲任务拓展
1.在App中完成此关卡的任务
2.习题练习
任务场景再现:

(1)如果解决方案是这样的,能完成任务吗?如果不能,该如何修改?

(2)如果解决方案是这样的,能完成任务吗?如果不能,该如何修改?

3.拓展任务
如果任务场景如图2.7所示,该如何给出解决方案?

图2.7 任务拓展场景
你的思路: