中国古代伟大的教育家孔子曾说过“知之者不如好之者,好之者不如乐之者”。这句话的意思是说懂得学习的人比不上喜爱学习的人,而喜爱学习的人比不上以此为乐的人。现在我们要开始正式学习 Scratch 了,难道要从一大堆陌生的指令开始学起?那岂不是很不符合“乐之者”的古训吗?别担心,还记得我们的小伙伴卡卡吗?——ScratchJr 编程世界那只可爱的小猫?他将继续和你一起学习,深入 Scratch 世界,展开一场有趣的冒险故事……
时间过得很快,卡卡已经是一名小学生了。
卡卡是一名狂热的游戏爱好者,最近他迷上了《猫的世界》。这个游戏提供了一种创造者模式,进入游戏后,你可以像上帝一样创造自己想象中的世界!卡卡给自己设立了一个目标——在《猫的世界》中,按比例把自己居住的城市搭建起来——这可是一项规模浩大的工程!为了完成这个目标,卡卡除了上学之外就泡在游戏里,简直到了废寝忘食的程度。
经过几个月的努力,卡卡终于搭建出了城市的大体轮廓——可是烦恼也随之而来——卡卡发现自己的视力似乎下降了,看黑板上的文字有点模糊,身体素质也大不如前,学校组织跳绳比赛,他才跳了两个就气喘吁吁,找个体重计一称才发现自己的体重已经严格超标!以前他可是班里的运动健将呀!真是祸不单行!卡卡想到这几个月自己沉溺在游戏中的生活,不禁后悔起来。
这时,小猫的好朋友小企鹅打来了电话。一上来就兴奋地说:“卡卡,我有个好玩的游戏推荐给你!”
“游戏?省省吧,我正烦着呢”,卡卡说了一下自己的情况。
小企鹅胸有成竹:“我说的这个游戏不一样!这是最新的全息AR游戏,穿上游戏装备,你就感觉进入了另一个世界,特别真实!玩的过程中要做肢体动作,还能锻炼身体呢!”
“这么好?”卡卡半信半疑。
“就在你近附近的未来大厦,离你家挺近的,你不信就自己去体验一下呗!”
“好吧”。
卡卡放下电话,朝未来大厦走去。
未来大厦的外观很像一艘起航的宇宙飞船的样子。卡卡按照楼下的提示牌到了最顶楼,这是一个非常宽敞的大厅,看不出有什么特别的地方。正在东张西望的时候,一名工作人员微笑着迎了上来。
“您好!请问您是来体验全息AR游戏的吗?请出示您的身份识别卡”。
“是的”,卡卡拿出自己的身份识别卡递了过去,让工作人员进行了登记。
“核验通过,您可以体验这个游戏,请跟我来吧”。
卡卡带着一丝忐忑的心情,走了过去……
学习目标
- 熟悉 Scratch 3.0的编程环境;
- 掌握使用 Scratch 开发程序的基本操作步骤;
- 使用外观、事件和控制类的指令编写一个简单的对话程序。
编程实战
本节我们使用Scratch实现一个基础的场景对话程序。
第一步:设置舞台背景
打开你的Scratch 编程环境,它会默认新建一个空白项目。
前面的故事情节中,卡卡来到了未来大厦顶楼大厅,我们先来设置一下 “舞台”的背景,这样更有真实感。
把鼠标移动到角色列表区最右侧下面的按钮上,会弹出一个飘浮菜单,并提示你“选择一个背景”:
背景的设置有四种方式,从向到下依次是:
- 上传:从你的电脑中找一张图片作为背景;
- 随机:由系统从自带的背景库中随便选择一个设置为当前背景;
- 绘制:Scratch 自带了一个“绘图编辑器”,你可以施展丹青妙手,自己画一个背景;
- 选择:从Scratch自带的背景库中查找合适的背景。
这里,我们使用“选择”功能,点击,切换到“选择一个背景”页面,这里列出了 Scratch 自带的全部背景:
Scratch 3.0 内置了85种不同风格的背景,默认会全部显示出来。你可以用鼠标向下滚动寻找,也可以输入背景的名称查找,不过由于我们这次设置的场景是室内,所以更简单的方法是点击上面的“室内”标签,列表中就只剩下室内类型的背景了:
经过选择,“Hall”(也就是英语的“大厅”)比较合适,直接在上面点一下,就返回了主界面,背景已经更换成功:
第二步:添加角色
背景设置好,我们可以设置角色了。“卡卡”作为默认角色已经存在,我们再添加一个未来大厦的工作人员角色即可。把鼠标移动到角色列表右下角的小猫头按钮上,它会弹出添加角色菜单:
这个菜单和选择背景的菜单有什么区别吗?没有,功能一样,分别是选择一个角色、绘制角色、随机选择角色和上传角色,你直接可以使用“选择一个角色”按钮,打开内置的角色库:
内置的角色有三百个以上,可以为我们提供丰富的素材。你可以向下滚动,找到一个名字是“Pico”的角色添加进来,现在舞台上多了一个Pico的形象,同时Pico被添加到角色列表中,变为当前选中状态(加蓝色框)。如果你不小心添加错了角色,可以点一下角色列表中形象卡片右上角的垃圾桶把它删除就可以。
很明显,这样的布置是不合理的。你可以用鼠标拖动一下卡卡和Pico,让它们分开一点。然后确保当前选中的是Pico角色,点一下方向这个输入框,弹出了一个方向设置窗口。默认状态下,角色的方向是90度,也就是角色面向右面,那个蓝底白字的醒目箭头代表了当前方向。
现在把圆盘上的箭头拨动到向右的状态,同时点一下圆盘正下方的“水平翻转”,这个角色就变成了与卡卡面对面的形态,而方向中的数值也变成了“-90”。
鼠标点一下圆盘之外的区域,圆盘就会消失,角色的布置就完成了:
第三步:编写代码
现在我们来为角色编写代码。首先在角色列表中选择Pico,然后在右侧的指令区点击“外观”(紫色类型)按钮,指令区会向下滚动到外观类指令的初始位置。用鼠标按住“说你好2秒”这个指令不松开,把它拖动到代码区域再松开,这个指令就会出现在代码区。这时你用鼠标点一下代码区的指令,它会立即得到执行,Pico头顶出现一个表示说话的气泡:
很明显,这条指令的意思是让角色说出你设置好的内容。你可以把“你好”改为“您好,请出示您的身份识别卡”,后面的秒数可以不用修改,点击试一下效果。
代码区的指令可以用鼠标点击来执行,也可以在发生特定事件的时候执行,这时要用到“事件”类指令(黄色类型),切换到事件类指令,找到“当绿旗被点击”,把它拖动到代码区。注意,把这条指令拖动到代码区后先不要松手,让它靠近已经添加的“说话”指令,你会发现这两条指令之间有一个灰色的“吸附”效果:
此时松开鼠标,会发现这两条指令已经紧密扣接在一起。这正是Scratch指令组织的方式,它们像积木一样,连接在一起的指令才能按顺序执行。此时我们不需要再点击指令,可以点击舞台上方的“绿旗”按钮,Pico就会开始说话:
为什么要用绿旗来启动程序呢?直接点击代码区中的指令不是更方便吗?别着急,接下来你就明白了。
Pico说话后小猫会回复Pico,我们在角色列表中选择小猫,发现代码区域中的指令消失了。这是因为不同的角色各自有自己的代码,小猫还没有编写指令的缘故。
照刚才的方法,为小猫也编写说话的程序。然后点击绿旗,会发现小猫和Pico都说话了——用鼠标肯定无法同时点击两个角色的代码,这样就起到了统一控制的效果:
不过新的问题来了,你会发现卡卡和Pico是同时说话而不是先后说话。这说明我们的程序还不严谨。卡卡应该在Pico说话结束之后才说话,因为Pico说话要2秒钟,那么卡卡说话的指令应该在绿旗指令之后2秒执行才对。怎么做到这一点呢?你可以在“控制”类指令(橙色)中找到一个“等待1秒”指令,把它拖动到小猫代码区,放在绿旗和说话指令之间,并把等待的秒数由“1”修改为“2”就可以了:
再次点击舞台上方的绿旗按钮执行程序,卡卡和Pico的对话是不是正常了呢?
第四步:保存程序
本节内容已经完成,这时应该保存一下我们的作品,这样你还可以随时打开它运行或修改。
用鼠标点击 Scratch 3.0主界面上方的“文件”菜单,再点击最后一项“保存到电脑”:
这时会弹出保存窗口,你可以找到电脑上一个合适的目录(最好养成把你的作品保存到一个固定位置的习惯,这样下次容易寻找),把文件名称修改为“卡卡在体验中心”,再点右下方的保存按钮即可完成。
需要注意的是,Scratch 不会自动保存你的作品,如果你在保存之后又修改了程序,那么需要再执行这个步骤,重新保存一次,这时可以选择是替换原来保存的版本,或者重新换个目录或名字保存。
Scratch 为了防止你的作品丢失,还加了一个人性化的选项。当你关闭 Scratch 的时候它会提示你是留在当前程序(Stay)还是离开(Leave)。如果你选择了Leave,没有保存的代码就会丢失,所以在点之前应该想一想自己是否已经保存了最新的程序。
那么如果我想打开以前保存的程序修改怎么办?直接使用“文件”菜单下的第二项“从电脑中上传”,找到你保存的文件打开就可以啦。
指令小贴示
- 当绿旗被点击:控制类指令,启动程序的方式之一,点击舞台左上角的绿色旗帜,会触发以这条指令开头的所有代码执行;
- 说“【内容】"【数值】秒:让角色说话,显示时间为设定的秒数,时间到才执行下一条语句(如果有的话);
- 等待【数值】秒:暂停当前程序设定的秒数,时间到才执行下一条语句,这不会影响角色的其它代码。
课后思考
通过这个示例,你应该基本了解了设置舞台背景、设置角色、为角色设置属性和编写代码的过程,Scratch程序的开发基本上就是由这些步骤组成的。由于是第一次编写程序,所以我们讲的内容不多,你可以从以下几个方面进行一些扩展学习:
尝试把不同类型的指令放到角色的代码区,用鼠标点击运行,看看有什么效果?为什么有的指令可以执行,有的却不能直接运行呢?
分析一下指令的外观有哪几种形状,比如椭圆形的、条状的、六边形的,它们和其它指令之间怎样才能结合起来使用?
这里我们只实现了卡卡和Pico的一个对话,如果想让它们有更多对话内容,那就需要添加更多的说话指令,试试怎么结合使用等待和说话指令,让它们多说几句话吧。