卡卡在工作人员的引导下穿上游戏特制的装备。
“游戏中,您注意一下画外音,AI助手会给您提供一些提示信息“。
“好的,谢谢啦!”
卡卡进入虚拟世界,眼前飘过一连串游戏名称。《第六人格》、《王者归来》,《出征三体世界》……卡卡有点眼花缭乱。这时,一个标题进入了他的视野——《拯救!屏奴的逆袭》。
“屏奴?”卡卡有点好奇地问了一句。
AI助手的声音传来——“屏奴,就是每天面对各类屏幕(手机、电脑、Pad)无法自拔,已经影响健康的人……”
“就玩这个”卡卡说。
话音刚落,场景切换到了一个大草原,湛蓝的天空飘着朵朵白云。
AI助手提醒卡卡,这是游戏的热身环节,要先走完2000步才能开始游戏。
“2000步?小意思”,卡卡开始小跑起来。不一会就满头大汗……
学习目标
- 进一步熟悉 Scratch 编程环境;
- 学习让角色在舞台上移动并产生“动画”效果;
- 掌握重复执行、逻辑判断类控制指令;
- 初步了解变量的概念。
编程实战
本节我们使用Scratch编程控制小猫在舞台上来回走动,走到2000步时自动停止。
第一步:舞台设置
新建一个 Scratch 作品,利用上一节课所学的知识,设置舞台背景为“Blue Sky”(蓝色天空),将默认小猫角色的大小修改为60,并放到背景中的地面上。
01 设置舞台.png第二步:编写跑步代码
试着从指令区拖动一个“移动10步”指令到代码区,点击这条指令执行,你会发现小猫果然向前移动了一点点。那么要移动更多的步数怎么办呢?把步数直接修改成2000?运行一下,发现小猫瞬间就移动到舞台边缘不动了。原来,Scratch 规定角色是不能走出舞台范围之外的,那我们就需要解决两个问题:
- 不能让小猫一下走完2000步,电脑的运算太快了,这样你根本看不到走路的过程;
- 当小猫走到舞台边缘的时候,要能掉头向回走。
你可以写出这样的指令:
02 移动指令这三条指令都是运动类的指令,它将小猫的翻转方式设置为左右翻转(如果没有这条指令,小猫碰到边缘反弹回来的时候就变成头向下了,你可以试验一下),再移动10步,如果碰到舞台边缘,小猫会回过头来。这样,你只要不断点击这段代码,重复每次走10步的过程,就可以让小猫不断地走路。
有没有什么办法让小猫自己不断地重复执行这段代码呢?有的,找到“控制”类指令中的“重复执行”指令。这是一个奇怪的指令,有点像一边开口的抽屉,里面可以装东西。当你把它拖动到代码区域时,可以试着用它去“套”住你想重复执行的指令,这些执行就会一直反复执行下去!
03 重复执行你会看到图中我把设置旋转方式的指令放在了重复执行之前,这是因为设置旋转方式只需要设置一下就能一直生效,不需要反复修改。现在点击这段代码,你会发现小猫已经学会了在舞台上来回移动——注意,是“移动”不是“走路”,因为小猫的腿似乎并没有动!能不能实现像现实中的人走路一样让小猫迈开腿呢?这就需要用到制作动画的原理了。
电影上的人物是怎么动起来的呢?是因为摄像机为运动中的角色拍摄了大量的照片,一般是每秒钟至少24张,当把这些照片连续展示在你眼前时,由于你的眼睛存在“视觉暂留”现象,你会觉得这些角色真的动起来了。
我们要实现小猫走路,也得用到这个原理。不过我们不能为小猫每秒钟拍摄很多照片,只能让小猫轮流显示两条腿在不同位置的照片,重复执行的时候,你就会觉得小猫的腿在动。这就要使用 Scratch 提供的“造型”功能。Scratch 角色库中的大部分角色都带有不同的造型,当你在角色库查找角色时可能会注意到,把鼠标放到角色上,角色就会动起来,这就是通过不断切换角色的不同造型来实现的。
我们的小猫角色有没有别的造型呢?注意一下项目编辑区上方有三个标签页,分别是“代码”、“造型”和“声音”,点击切换到“造型”标签,可以看到下面的界面:
04 显示造型页面左侧的列表区域显示出小猫有两个造型,你可以点击这些造型切换一下,看看造型之间有什么不同。Scratch 提供了丰富的造型创作功能,你可以通过下方的小猫头按钮,选择新的造型到当前角色,也可以自己绘制一个新的造型——右侧显示的绘图编辑器就是用来做这个的,它的功能很强大,等用到的时候我们再说——甚至你可以使用电脑自带的摄像头拍摄一个图片作为新造型!不过今天我们暂时不用修改小猫的造型,返回代码标签页,把代码修改为下面这样:
05 切换造型其实,只是增加了一条“外观”类型的指令(紫色)到重复执行的代码中,为了方便运行程序我在最前面添加了一个绿旗启动按钮。这时点击绿旗,你发现小猫真的跑起来了!(小猫跑动的时候,你有没有注意到在角色列表区域上方,小猫的X属性在不断发生变化?这是我们下一次要学习的内容,这里先提醒关注一下)。
第三步:为小猫实现计步
根据故事情节,小猫要跑2000步。怎么在天空中显示出小猫已经跑了多少步?这要用到变量。
什么是变量?变量是计算机编程中不可或缺的概念,你可以理解为变量就是一个存取数据的盒子,给这个盒子取一个名字(代号)之后,你就可以利用这个名字去获取盒子的内容,或者修改盒子的内容。举个例子,你买了一个存钱罐把自己的零钱存起来,就可以把你的“零钱余额”视为一个“变量”,当你向盒子里投币时,变量的值就增加了;从盒子里取钱用的时候,变量的值就减少了,任何时候你查看“零钱余额”的数值时,都会获得最新的余额数字。当然,Scratch 中的“变量”不仅可以保存数字,还能保存字符等数据,我们用到的时候再说。
就眼下的场景而言,你一定会想到,我们可以设置一个变量去保存小猫的步数,然后让它在跑步的时候,每重复执行一次移动指令,就在变量上加10步不就可以了吗?正是如此。可是怎么才能设置一个变量呢?
在项目编辑区,你可以点击切换到“变量”类(桔红色)指令,最上面就是一个按钮——“建立一个变量”。点击它,会出现新建变量的界面,你可以给变量取名为“小猫步数”,确定即可,先不用管它适用于所有角色还是当前角色。
07 新建变量变量建立完成后,注意一下舞台左上角,出现了一个灰色的条状区域,里面显示了变量的名称和变量当前保存的数值。现在对代码做如下修改:
08 变量相关代码桔红色的两条指令是新加的,第一条是在绿旗开始时把“小猫步数”设置为“0”,这样会重新开始计数;第二条是在重复执行的代码内部,小猫移动10步后,把小猫步数这个变量也增加10。需要注意的是,初学者最容易犯的错误就是变量混用,因为一个程序中可能有多个变量,保存不同的值,而对变量的操作都是通过一个下拉菜单选择你要操作的变量的,点击指令中变量名称旁边向下的小三角符号就可以看到这个菜单 :
09 变量操作菜单所以在拖动变量相关的指令时,务必检查一下你操作的是不是正确的变量。
点击绿旗运行,小猫跑步的时候,舞台左上角的步数显示果然随着增加了。再次点击绿旗,又重新开始从0计算。
第四步:跑完休息
小猫热身的要求是跑2000步,怎样让它在跑到2000步之后就停下呢?这要用到逻辑判断。
什么是逻辑判断?简单来说就是“是”和“非”、“真”和“假”相关的问题。比如:如果外面下雨了,我出门就带上伞。这里的“下雨”就是一个逻辑判断,它决定了后面是否带伞这个动作。在讲到流程图时,我们讲到了“条件执行”,就是指这种情况。“是否下雨”就是条件,当条件成立,我们做拿雨伞的动作;如果不成立也就是没有下雨,当然就不用带伞了。
具体到本例来说,就是我们要判断一个条件,小猫是否已经跑了2000步以上?换句话说,“小猫步数”这个变量的值是不是已经大于2000了?如果大于2000,我们就让它停下来。怎么做呢?
在“控制”类指令中找到“如果...那么”,就是这个——
10 如果那么指令如果后面有一个深色的六边形区域,这里就是放我们要判断的条件。如果条件成立,就执行这条指令所“包含”的代码,否则不执行。那么条件从哪里来?
切换到“运算”类(绿色)指令,找到下面这组指令:
11 逻辑运算指令发现了吗?这六个指令正好是六边形的,它们就是与“如果...那么”配合使用实现逻辑判断的指令,这里生成的指令可以嵌套到“如果...那么”的条件区域中去。而第一种判断“XX(空白,这里是放变量的,可以把变量拖过来)大于50”正是我们需要的判断,把它和“小猫步数”变量以及“如果...那么”指令组合起来,变成这样:
12 条件判断注意一下,绿色的条件中“小猫变量”是从指令区拖动过来的。初学者可能会犯的错误是直接在这个圆形中输入变量名字,那是无法从变量中取值的,而是拿变量的“名字”或代号与后面的数字比较,也就是用“小猫步数”这四个汉字去和2000比较大小,这是没有意义的,一定要注意避免!
现在条件已经组合完成,只要条件成立的时候,停止程序就可以。从控制类指令中拖动一个“停止全部脚本”到“如果...那么”指令当中,当小猫步数大于2000的时候,程序就会被停止。(这条指令还有其它选项,我们用到时再说)。
13 停止脚本最后,我们再把这段组合好的代码拖动到小猫跑步的重复执行程序中,让程序在小猫每次跑完10步的时候就去判断一下是不是已经大于2000,大于2000就停止程序:
14 完整的程序点击绿旗,观察小猫跑步的执行情况,到2000步的时候,它停止了吗?
第五步:保存程序
最后,使用“文件菜单”下的“保存到电脑”,将作品保存为“热身中的卡卡.sb3”,本节的任务就完成了。
指令小贴示
- 移动【数值】步:让角色朝着目前的方向前进设定的步数;
- 碰到边缘就反弹:角色移动到边缘会改变方向,改变方式与角色的旋转方式有关,如果要让角色掉头往回走,就需要用“将旋转方式设为左右翻转”指令,或在角色属性中设置这个旋转方式;
- 将【变量名称】设为【值】:直接给你建立的变量指定一个值,一般用于程序启动时为变量建立初始值;
- 将【变量名称】增加【值】:在变量现有数值的基础上加上指定的数字。比如变量原值为10,增加10后,变量值为20;
- 停止【全部脚本】:这个指令有三个选项,分别是停止全部脚本(把所有角色的所有代码都停止执行)、停止当前脚本(只影响这个指令所在的代码)、停止该角色的其它脚本(除了本段指令,当前角色的其它代码都不再执行),具体可以在后续课程中逐步体会它们的不同之处;
- 下一个造型:将角色在舞台上的样子切换成它的造型列表中下一个造型,如果已经是最后一个,再跳到第一个,这样切换造型会产生动画效果;
- 重复执行:这是一个控制类指令,被它包含的指令会一直启动下去,除非有其它指令停止它的运行;
- 如果【判断条件】那么...:控制类代码执行的指令,如果后面的运行条件成立,就执行包含的代码。这个指令会和绿色的逻辑运算指令结合起来使用,让程序根据条件的不同来执行不同的代码。
课后思考
本节我们第一次接触到变量,并学习了重复执行和条件执行,这些都是下一步学习的重要基础,务必认真领会。
一般来说,程序的结构类型可以分为顺序结构、分支(条件执行)和循环(也就是重复执行)。本节我们把这三种类型的结构都用到了。
要理清复杂程序的结构,最好的方法是流程图,你能运用之前所学的知识,为本节学习的程序画一幅流程图吗?
网友评论