第2课 我是小小赛车手
2.1 课程简介
(1)本课的课程名称是“我是小小赛车手”。赛车是一项具有挑战性的运动,也是一种技巧。要赛出好成绩,需要有娴熟的驾驶技术以及选车、维护车、修车的全面技能,这里包括机械、电气的工程技术。
(2)构思和设计这样一个动画故事:两个小朋友刚刚学会了驾驶汽车,今天约好要比一比谁的驾驶技术高。设计一个双人赛车小游戏,各自驾驶自己的车,开始比赛。
(3)课时建议:总用时45分钟,其中老师讲解10分钟,学生设计创作20分钟,学生交流分享7分钟,老师点评总结8分钟。分组建议:2或3人一组。
2.2 课程准备
同第1课。
2.3 课程的STEAM元素
(1)科学:目前市场上的汽车动力有两种,一种是燃料(汽油、柴油和天然气等),另一种是电。例如,汽油发动机的目的在于将燃烧汽油的热能转换为运动,以便汽车能够行驶。目前将汽油变成运动的最简单方法是在发动机中燃烧汽油,燃烧的汽油产生的能量通过活塞、连杆、齿轮等,将动能传递给车轮。因此,汽车的汽油发动机是一种“内燃发动机”,即燃烧发生在缸体的内部。
然而,燃烧的汽油会产生严重的环境污染,电动汽车很好地解决了这个问题。电动汽车动力总成中包含一个电池组、一个控制器以及电动机。它是由电力驱动及控制系统、驱动力传动等机械系统、完成既定任务的工作装置等组成。电力驱动及控制系统是电动汽车的核心,也是区别于内燃机汽车的最大不同点。电动汽车的其他装置基本上与内燃机汽车相同。
(2)工程:能利用互联网搜集更多的信息来改进和完善自己的项目;做更多有关该主题的创作设计。
(3)技术:了解编程是什么;能应用编程知识和技能设计小动画和小游戏;了解车辆驾驶的交通规则和注意事项。初步掌握条件判断指令和循环指令的概念和实际应用。
(4)艺术:从网络搜索汽车图片并对其进行加工处理,初步掌握图片处理技巧,增强美术修养;掌握给动画或游戏编配音乐的原则和方法。
(5)思维和能力:启发学生的好奇心,锻炼学生的想象力,培养学生的逻辑思维和沟通协作能力。
2.4 提问与想象
旨在围绕主题让学生提出感兴趣的可以探讨的主题。课堂上,创设问题情境是关键,教师让学生想象汽车的发明、汽车的原理、汽车的驾驶和维护以及汽车给环境带来的问题。教师要重点指导学生创作和设计本作品的方案,并阐述其中的想法。
(1)从动力的来源角度,汽车有哪几种?
(2)汽车为什么会跑?方向盘的作用是什么?
(3)如何编程设计,以实现通过按电脑键盘上的键来控制小汽车的前后移动?
(4)汽车的行驶方向如何控制?
2.5 讨论与计划
旨在思考解决问题的对策和实现的方法。不同小组的同学提出各种实现驾驶小汽车的方案和办法,说明本作品实现的原理和所需准备的素材,探讨创作中的STEAM元素。教师要重点指导确定作品设计的最终方案,并准备相关素材。
2.5.1 设计方案
(1)本游戏一个人控制蓝色小汽车,另一个人控制黄色小汽车。用键盘上的W键和S键分别控制蓝车的前进和后退,用键盘上的A键和D键分别控制蓝车的左转和右转;用键盘上的“上移键”和“下移键”分别控制黄车的前进和后退,用键盘上的“左移键”和“右移键”分别控制黄车的左转和右转。
(2)如果驾驶的蓝色小汽车碰到了黄色小汽车,蓝色小汽车会自动躲避,即前进方向自动转向。同样,如果驾驶的黄色小汽车碰到了蓝色小汽车,黄色小汽车会自动躲避,即前进方向自动转向。
(3)舞台默认的背景颜色是白色,本课游戏的舞台是一个赛车场,所以,给舞台设置一个合适的背景作为赛车场,这里选择草绿色。
(4)如果小汽车开到赛车场的边缘,小汽车自动反弹而转向。
(5)给本课动画配上音乐,培养学生的音乐艺术素养。选择什么音乐好呢?可以从网络上下载儿童歌曲《小司机》。注意,音乐的内容、节奏、风格等应该与本课动画相呼应。
2.5.2 素材准备
(1)蓝色小汽车:自己动手绘制一个蓝色小汽车(也可以从网络上搜索、下载并加工),如图2.1所示,图片造型力求准确和精美。
图2.1 蓝色小汽车
(2)黄色小汽车:自己动手绘制一个黄色小汽车(也可以从网络上搜索、下载并加工),如图2.2所示,图片造型力求准确和精美。
图2.2 黄色小汽车
(3)背景:设计一幅小汽车比赛的场地,绿色的纯色场地比较合适,参考背景图片如图2.3所示。由于该背景图片简单,同学们可以在系统自带的画图板里设计。
图2.3 背景
(4)音乐:从网络上搜索、下载一首歌曲作为本游戏的背景音乐,歌曲的内容、风格和节奏应与本课游戏相呼应。背景音乐可以选择儿童歌曲《小司机》。
2.6 设计与创作
旨在通过学生亲自实践,设计并完善作品。不同小组的同学动手设计作品,记录问题。教师要重点指导设计程序的创作步骤、重点、难点。
2.6.1 打开已有项目
(1)如果已经有了本课的案例程序,请打开Scratch3.0系统,在系统主界面的左上方单击“文件”菜单,在显示出来的菜单里再单击“从电脑中上传”,此时选择需要打开的Scratch项目程序即可,Scratch3.0的文件扩展名是.sb3。参见图1.18。
(2)打开程序后,代码(图形化程序)就会出现在系统的代码区。此时,就可以用鼠标拖动代码里的指令(积木块),进行模仿学习,老师也可以按照这种方法进行演示和教学。
(3)也可以修改代码区里的代码。当需要删除某条指令或某段代码时,鼠标移到该指令,按住鼠标左键,直接用鼠标左键将指令积木拖动到指令库里,然后松开鼠标即可。当需要添加某条指令时,鼠标移到指令库里的某条指令,按住鼠标左键,直接用鼠标左键将指令积木拖动到代码区,然后松开鼠标即可。
(4)注意:如果修改了代码,请确认修改的代码正确无误后,单击主界面左上方“文件”菜单,在显示出来的菜单里单击“保存到电脑”,保存的文件名不变。如果不能确定修改的代码是否正确,可以在单击“保存到电脑”菜单后,重新给该项目命名,之前的程序依然存在。
2.6.2 新建一个项目
(1)如果还没有本课的案例程序,请打开Scratch3.0系统,在主界面的左上方单击“文件”菜单,在显示出来的菜单里单击“新建项目”,此时会出现Scratch3.0系统的默认界面,参见图1.19。
(2)默认的主界面的代码区是空白的,舞台中央默认的角色是一个小猫,角色名称是“角色1”,这是Scratch3.0系统的标志。此时,单击“文件”菜单,在显示出来的菜单里单击“保存到电脑”,给新建的项目起一个名字(命名),名字应该与项目的内容相符,本课的名称是“我是小小赛车手”。命名后,将此项目保存在电脑里的某个位置。
(3)此时,可以按照下面的代码用鼠标左键拖动指令库里的指令到代码区,全部完成后,就可以单击主界面上方的“小绿旗”执行程序。如果有问题,请检查程序是否正确。
2.6.3 编写代码
1.蓝色小汽车的代码
(1)打开Scratch3.0编程系统,出现Scratch3.0编程主界面。此时在主界面右上方的舞台上,系统默认的角色是一个小猫(Scratch3.0系统的标志),名称是“角色1”。
(2)因为本课不需要角色小猫,所以,单击舞台下方角色区域的小猫(角色1),此时小猫会变成蓝色,同时在此图标右上角出现一个“x”。单击“x”删除该角色,也可以单击鼠标右键,在出现的菜单里选择“删除”,即将角色小猫删除。
(3)新建1个角色“蓝色小汽车”。在舞台下方的角色区域,鼠标指向“新建角色”图标,在显示出来的菜单里单击“上传角色”,将事先准备好的如图2.1所示的蓝色小汽车图片上传,将角色名称修改为“蓝色小汽车”,修改角色名称的方法请参见图1.20。
(4)紧接着,鼠标左键单击主界面左上方的“代码”标签,按照图2.4~图2.6所示,用鼠标左键从主界面左侧的指令库里拖动指令到代码区域(主界面中间)。具体操作方法及注意事项请参考本丛书的第1册(《Scratch3.0编程基础及指令详解》)。
图2.4 蓝色小汽车的代码-1
图2.5 蓝色小汽车的代码-2
图2.6 蓝色小汽车的代码-3
2.黄色小汽车的代码
(1)按照与蓝色小汽车相同的操作步骤和方法,新建1个角色“黄色小汽车”。在舞台下方的角色区域,鼠标指向“新建角色”图标,在显示出来的菜单里单击“上传角色”,将事先准备好的如图2.2所示的黄色小汽车图片上传,修改角色名称的方法请参见图1.20。
(2)紧接着,鼠标左键单击主界面左上方的“代码”标签,按照图2.7~图2.9所示,用鼠标左键从主界面左侧的指令库里拖动指令到代码区域(主界面中间)。具体操作方法及注意事项请参考本丛书的第1册(《Scratch3.0编程基础及指令详解》)。
图2.7 黄色小汽车的代码-1
图2.8 黄色小汽车的代码-2
图2.9 黄色小汽车的代码-3
(3)黄色小汽车的代码与蓝色小汽车的代码基本相同,在代码编写设计的过程中,可以复制粘贴蓝色小汽车的代码,稍加修改即可,这样可以加快编写代码的速度。具体方法是:鼠标指向蓝色小汽车的某段代码,右击鼠标,在显示出来的菜单里单击“复制”,鼠标左键单击代码区,此时会出现这段代码的复制品,鼠标指向该复制品,按住鼠标左键,将此段代码拖动到角色区的黄色小汽车位置,当黄色小汽车图标“晃动”时,松手即可。该操作有时需要多次尝试方可成功。由于蓝色小汽车多了一段相同的代码,所以,须将多余的该段代码删除。
3.背景的代码
(1)鼠标单击舞台下方的背景,舞台的默认背景是白色的,参见图1.25。请注意,此时系统主界面左上方的标签的变化。针对角色,标签名称是“代码”“造型”和“声音”。针对背景,标签名称是“代码”“背景”和“声音”。
(2)系统默认的舞台背景是白色的,为增强动画视觉效果,鼠标单击舞台下方的背景,紧接着单击主界面左上方的“背景”标签,鼠标指向左下方的“新建背景”图标,在显示出来的菜单里单击“上传背景”,将事先准备好的如图2.3所示的背景图片上传。
(3)鼠标指向“新建背景”图标,在显示出来的菜单里可以看出,新建背景有四种方法,即“选择一个背景”(从系统自带的背景库里选择)、“绘制”“随机”(系统自带的背景库里随机选择,即系统自动选择)和“上传声音”。
(4)紧接着,鼠标单击主界面左上方的“声音”标签。鼠标指向左下方“新建声音”图标,在显示出来的菜单里单击“上传声音”,将事先准备好的儿童歌曲《小司机》上传。
(5)鼠标左键单击主界面左上方的“代码”标签,按照图2.10所示,用鼠标左键从主界面左侧的积木库里拖动积木到代码区域(主界面中间)。具体操作方法及注意事项请参考本丛书的第1册(《Scratch3.0编程基础及指令详解》)。
图2.10 背景的代码
4.运行程序
(1)至此,本课代码已经编写完成。单击系统主界面左上方的小绿旗,运行程序。两个人可以分别用键盘上的W、S、A、D键和上移键、下移键、左移键、右移键来操控蓝色小汽车和黄色小汽车。程序的具体调试方法和注意事项请参考本丛书的第1册(《Scratch3.0编程基础及指令详解》)。
(2)程序执行的效果截图,如图2.11所示。请注意,该截图仅仅是程序执行到某一时刻的效果,不可能反映程序执行的整体效果。
图2.11 程序执行效果截图
2.6.4 要点和难点说明
注意:每一课的要点和难点说明在以后的各课中不重复说明。
(1)Scratch程序设计是针对每一个“角色”和舞台的“背景”的,也就是说,每一个角色以及舞台背景的代码是各不相同的,不同的代码控制不同的角色或背景的动作以及各种的行为。
(2)在图2.6和图2.9中,使用了运动指令“碰到边缘就反弹”。其含义是,当角色移动到舞台四周边缘时,按照光线入射角和反射角的规律反弹。反弹时,角色的“面”(角色区域角色右侧的一面)朝向反射方向。本课的角色小汽车的“面”就是车头向右的方向。
(3)在图2.4和图2.7中,使用了运动指令“面向……方向”,本课中,里面的参数值是“0”,表示该角色的“面”是朝向舞台上方的,本课中,车头朝上。
(4)“如果……那么”是条件判断指令的一种,此条指令是一个语句体,语句体里可以有一条或多条指令,是多个指令的集合。菱形框里是条件,当条件成立时,执行语句体的指令,当条件不成立时,执行此条指令(语句体下面)下面的指令。
(5)本课中,如图2.12所示,当程序执行到第一个“如果……那么”条件判断指令时,此时如果按下键盘上的W键,小汽车向前移动两步,此时如果没有按下W键而是按下S键,小汽车就向后移动(即车头朝向相反的方向)一步。
图2.12 条件判断指令说明
这两条指令是包含在重复循环指令里的(见图2.4和图2.7),程序首先是顺序执行的,如果执行到第一个条件判断指令时条件不成立,就顺序执行下一条条件判断指令,以此类推。
(6)在图2.12中,侦测指令“按下……键?”是一个可选项,里面包括26个英文字母、10个数字键、空格键、上移键、下移键、左移键、右移键和任意键。丰富可选的指令给程序设计带来了极大的灵活和方便。
(7)键盘上的键是在英文输入法下的,在中文输入法下系统不能识别,即不能使用。
(8)Scratch系统里不区分键盘上的键的大小写,即大小写都可以使用。
(9)本课中,如图2.13所示,这里的“-1”是将当前小汽车的方向坐标值取反。
图2.13 小汽车方向说明
系统舞台的方向坐标系如图2.14所示,如果小汽车现在面向的是舞台方向坐标系的45°,那么取反后,小汽车就会面向-45°。
图2.14 Scratch舞台方向坐标系
(10)图2.6和图2.9中的外观指令“说……秒”,是为了在程序开始执行时,提示大家如何操作电脑来驾驶小汽车。反之,程序开始执行后,大家不知道如何来玩游戏。在图2.8中,黄色小汽车多了一个控制指令“等待……秒”,是为了与蓝色小汽车的提示错开。也就是说,程序开始执行时,蓝色小汽车的提示先出现在舞台上,然后,再出现黄色小汽车的提示。如果两个小汽车的提示同时出现在舞台上,有两个问题。第一,大家的注意力难以集中,影响效果;第二,两个小汽车提示的字幕会相互遮挡,大家看不清楚。
2.7 测评与提升
不同小组的同学展示自己的作品,着重说明作品的设计原理、方法和特点,并分享设计中遇到的挑战和解决的办法。教师重点指导如何完善与提高作品。
(1)本课需要解决的问题包括:小汽车的前后移动、左右转弯,以及小汽车相互碰到一起的处理、小汽车碰到边缘的处理。
(2)程序是非常灵活的,为达到一个目的或效果,程序的设计也是千变万化的,可以有多种解决方法和实现路径。多学习,多实践,多总结,举一反三,便会逐步得心应手,灵活运用。
2.8 分享与展示
不同小组的同学继续分享各自思考和设计创作中的经验,从肯定、否定、兴趣点3个维度做出互评。教师重点指导如何科学有效地进行评价。
(1)为达到一个创意目的,或实现一个效果,程序的设计虽然可以有多种方案和方法,但好的程序除了程序执行的正确性外,还要求程序是容易理解的和简洁的。
(2)容易理解的程序会给自己和别人在调试程序和今后修改程序时带来极大的方便,而简洁的程序会提高程序的执行效率并有助于阅读程序。
2.9 反思与总结
不同小组的学生代表呈现互评结果,师生交流学习历程。教师重点指导学生如何进行有效的反思。
(1)绝对完美的程序基本上是没有的,如同我们写一篇作文,可以反复修改完善,精益求精。
(2)另外,作品的创意更是可以在程序的设计过程中,逐步求精,趋于完美。因为只有在实际的程序设计中,才会发现问题,才会有更多更好的想法。
2.10 本课知识技能
(1)事件指令:当“小绿旗”被点击。
(2)控制指令:重复执行;如果……那么……。
(3)侦测指令:按下……键?;碰到……?。
(4)运动指令:碰到边缘就反弹;面向……方向;移到x:……y:……;右转……度;左转……度;移动……步。
(5)外观指令:说……秒;将大小设为……。
(6)运算指令:……*……。
(7)声音指令:播放声音……等待播完。
(8)舞台背景颜色的绘制。
(9)动画背景音乐的搜索、选择、播放。
(10)图片的搜索、处理。
2.11 举一反三
(1)自己演唱儿童歌曲并录制下来,作为背景音乐。试试吧!
(2)当蓝色小汽车和黄色小汽车碰到一起时,游戏结束,发出声响并出现碰撞起火的效果,如何实现呢?
(3)一般来说,一个独立的动画或游戏程序在执行的过程中,应该有结束程序执行的方法。例如,当按下键盘上的某个键时,停止游戏。如何实现呢?
(4)同学们可以改变本课脚本里的参数,执行一下,看看有什么变化?思考一下,为什么?