软件编程系列课讲义
Scratch前置课第九讲:飞机大战
一、教学目标
1、掌握播放声音()等待播完、克隆【克隆(自己)、当作为克隆体启动时、删除此克隆体】、在()和()之间取随机数、重复执行直到()、广播【广播()、当接收到()】、变量【将()设为()、将()增加】的积木脚本使用。
2、学习积木的组合使用。
二、主要程序脚本
编号
详细内容
功能描述
【1】
“播放声音()等待播完”
播放指定的声音,声音播放结束再执行后面的脚本
(可选选项为角色中的声音名称)
【2】
“克隆(自己)”
以递归的方式克隆指定角色
(克隆选项为各个角色的名称)
【3】
“当作为克隆体启动时”
当角色作为克隆体被创建时执行该积木下方的程序脚本
【4】
“删除此克隆体”
删除相应的克隆体
(只能在“当作为克隆体启动时”积木下使用)
【5】
“重复执行直到()”
该积木内的脚本一直执行直到指定的条件为真
【6】
“在()和()之间取随机数”
返回从第一个指定数到第二个指定数之间,包含两个端点的伪随机数
(可填入整数或小数,前后数字均为整数时返回值为整数)
【7】
“广播()”
用于角色发送消息指令
【8】
“当接收到()”
用于角色接收指定的广播消息,接收后执行该积木下方的程序脚本
(接收内容为建立的广播消息)
【9】
“将()设为()”
用于给指定的变量设置为指定的字符串或数字
(变量选项为建立的变量名;设为数字时舞台区小数点后可显示六位)
【10】
“将()增加()”
按给定的值更改指定变量
三、课堂准备
编号
名称
内容
来源
备注
【1】
PPT课件
课堂全流程演示文稿
火星科学盒官网
【2】
课程资料
PPT课件、讲义、视频
火星科学盒官网
【3】
学生上课使用器材
笔记本电脑或者台式电脑
老师自备
电脑建议使用Windows系统,苹果电脑和Linux系统需要从官网上单独下载对应的软件
游戏手柄
火星人商城采购
飞机大战初始程序
网盘链接下载
【4】
编程软件下载
Scratch3.0
火星科学盒官网
火星科学盒官网在线编辑版
离线下载版
安装好后测试一下是否可以使用
四、上课流程
本节课包括7步具体流程:
(1)第1步为引入部分,可以通过一个小故事邀请学生帮助老师一起制作一个飞机大战的小游戏。时长控制在10分钟内。
(2)第2步为角色功能分析,通过展示效果视频分析角色的动作,对任务进行拆分。时长控制在5分钟内。
(3)第3-6步为项目制作,首先任务一为游戏添加背景音乐;之后复习克隆积木的组合使用,实现炮弹的持续发射。任务二中修改敌机脚本使用,实现敌机碰到下边缘时返回起始位置;修改起始位置为随机;使用重复执行直到()实现碰到闪电号时停止移动;最后使用广播和变量的相关积木实现游戏失败和胜利的效果。时长控制在65分钟内。
(3)第7步为总结与巩固,考察对本节课重点知识脚本和脚本逻辑的掌握。时长控制在5分钟内。
上课步骤
主要内容
备注
【第1步】引入
【对应PPT】“开始页”
【时长】10min
【引入】老师有一个好朋友XXX,他一直有一个梦想,就是开着战机在天空中翱翔,但是他年纪还太小了,和大家的年纪一样,他现在还不能实现这个梦想,所以他最近特别沮丧。那为了让XXX开心起来,我就想了一个办法,就是制作一个飞机大战的游戏,让XXX能在游戏中体验一下开着战机翱翔的感觉。那老师现在只做了一部分,剩下的一部分同学们帮助老师一起来完成怎么样?
故事尽量讲得生动有趣,课堂引入时多和学生互动。
【第2步】角色功能分析
【对应PPT】“项目拆解”
【时长】5min
【衔接话术】那下面我们就先来看一下最终要完成的效果,这样我们就能知道接下来要完成哪一部分了,同学们一定要认真看哦
【提问】在视频中敌机是如何移动的?敌机是从上方随机位置出现还是固定位置出现的?什么时候游戏会胜利,什么时候会失败?(学生回答)
【总结】敌机角色从舞台区上方随机位置出现并向下移动,碰到炮弹或舞台下边缘时会消失并重新从上方出现;游戏得分等于50时游戏胜利,敌机和闪电号碰到时游戏失败。
点名提问学生视频中的角色效果。
【第3步】播放背景音乐,炮弹持续发射
【对应PPT】任务一播放背景音乐,炮弹持续发射
【时长】20min
【衔接话术】刚刚我们已经分析了游戏效果,那下面我们就一步步地把游戏补充完整,首先咱们先让游戏能够播放一首好听又激昂的背景音乐。
【提问】可以放在重复执行中使用的播放声音的积木是什么?(学生回答)
【讲解】“播放声音()等待播完”积木可以放在“重复执行”中,因为我们要播放背景音乐,也就是让音乐一直播放,所以要使用到“重复执行”,那么选择用来播放声音的积木就是“播放声音()等待播完”。(等待学生拼接)(程序样例见“第五部分
–
程序1-1”)
【衔接话术】背景音乐已经可以播放了,那下面咱们来补充炮弹这个角色的积木。让闪电号能够不停地发射炮弹。
【讲解】在炮弹这个角色中已经有了这样一组积木,这组积木中角色作为克隆体启动时会显示出来,从闪电号出发,之后会一直向上移动,在碰到边缘和敌机时就会消失。
【提问】我们拼接了这样一组积木,为什么不能实现炮弹持续发射的效果呢?现在这组积木是让克隆体还是让原角色执行的?(学生回答)
【讲解】这组积木是让克隆体执行的,也就是说克隆出新的炮弹后,新的炮弹会从闪电号出发向上发射。但是在炮弹角色中并没有克隆自己的积木,也就是说没有克隆体能够执行这组积木,所以就没有炮弹持续发射的效果。
【提问】如果想让炮弹持续不断地发射,就需要让炮弹不停地克隆自己,使用什么积木能够让炮弹不停地克隆?(学生回答)
【讲解】使用“重复执行”积木让炮弹不停地克隆,为了让炮弹克隆的没有那么快,需要添加“等待()秒”积木,让炮弹每隔0.1秒克隆一次。因为原角色只能停留在原地克隆自己,所以为了不让它影响画面,需要添加“隐藏”积木把原角色隐藏。(等待学生拼接)(程序样例见“第五部分
–
程序1-2”)
1.本节课中用到的基本是学习过的积木,在制作时,主要使用提问的方式带领学生复习;
2.复习克隆相关积木时,重点说明一下克隆自己、当作为克隆体启动时与删除此克隆体积木时通常是组合使用的。
【第4步】任务一梳理
【对应PPT】任务一梳理
【时长】5min
【衔接话术】刚刚已经实现了炮弹持续发射的效果,那老师来考考同学们,看看同学们对积木掌握得怎么样
【提问】如何让多个同样的角色出现在舞台区?(学生回答)
【讲解】使用克隆可以让多个同样的角色出现在舞台区。
【提问】和克隆相关的积木有哪些?(学生回答)
【讲解】和克隆相关的积木有“克隆(自己)”、“当作为克隆体启动时”和“删除此克隆体”
【提问】这三个积木分别能够实现什么样的功能效果?(学生回答)
【讲解】“克隆自己”可以复制原角色,产生新的角色;“当作为克隆体启动时”是让克隆体执行命令;“删除此克隆体”实现删除当前克隆体的效果。
在提问过程中可以进行引导性提示。
【第5步】修改敌机脚本、制作胜利失败
【对应PPT】任务二砖块的随机出现
【时长】25min
【衔接话术】闪电号的炮弹可以不停地发射了,同学们是不是已经准备开着闪电号去大干一场啦?但是现在有一个问题,敌机从上向下飞行,在到达舞台下边缘后就卡住不再动了。它卡在了舞台下边缘,既打不中它,也没有新的敌机出现,这可怎么办呢。下面我们就想办法解决一下这个问题。
【提问】同学们有没有什么办法能够解决呢?(学生自由回答)
【话术】同学们的想法都很不错呀,老师这里也有一个想法,就是让敌机碰到舞台下边缘后就回到初始位置。但是这里有一个问题,没有直接侦测角色碰到舞台下边缘的积木怎么办呢?
【提问】同学们还记得在弹球打砖块那节课中是如何侦测小球碰到舞台下边缘的吗?(学生回答)
【讲解】可以侦测角色的y坐标,当角色的y坐标小于角色放置在舞台下边缘时的y坐标数值,角色就一定碰到了下边缘。可以先在舞台区拖动敌机角色,让敌机的头部贴近舞台下边缘,然后记录一下角色区y后的数值,填入“(y坐标)<()”中去。之后,是实现敌机碰到下边缘时移到初始位置。
【提问】让角色移动到一个固定坐标位置的积木是什么?(学生回答)
【讲解】“移到x()y()”积木让角色移动到一个固定的坐标位置,在这个积木中填入的数值和设置敌机初始位置的积木中的数字是相同的。(等待学生拼接)(程序样例见“第五部分
–
程序2-1”)
【衔接话术】运行作品之后可以看到,敌机碰到舞台下边缘之后能够返回初始位置了,但是,现在敌机只会从同一个位置出现,这样的话我们只要把闪电号移动到那个位置的下面就一定能够打中敌机。这样的游戏真没意思,XXX也肯定不会喜欢的。下面咱们就修改一下积木,让敌机能够从舞台区上方的随机位置出现。
【提问】敌机从一条横线的随机一个位置出现时,敌机的哪个坐标是不变的,哪个坐标是变化的?(学生回答)
【讲解】在一条横线上,角色的y坐标是固定不变的,x坐标是改变的。
【提问】能够让x坐标取到随机数的积木是什么?(学生回答)
【讲解】“在()和()之间取随机数”积木,可以将x坐标设为随机。在这个积木中填入的数字应该在-180~180之间,之后,取随机数的积木应该放在敌机角色的脚本中三个“移到x()y()”中x坐标的后面。因为这三个积木都是为了让敌机移到初始出发的位置。(等待学生拼接)(程序样例见“第五部分
–
程序2-2”)
【衔接话术】到这里,我们的游戏主体就完成了,现在可以控制闪电号去攻击敌机了。既然咱们制作的是一个游戏,那这个游戏肯定会有失败和胜利的情况。下面我们就先来完成游戏失败。
【提问】同学们还记得游戏什么时候会失败吗?(学生自由回答)
【讲解】在敌机和闪电号碰到的时候游戏会失败,游戏失败的时敌机会先停止移动,之后,失败角色显示并停止游戏。也就是说敌机会一直移动直到碰到闪电号,能够让敌机一直不停地向下移动使用的是“重复执行”,现在让敌机碰到闪电号时停下来,也就是给重复执行添加了一个停止条件。
【提问】给重复执行添加了一个停止条件的积木是什么呢?(学生回答)
【讲解】“重复执行直到()”在满足“直到”后填入的条件时,就会停止这个积木中的脚本,向下执行其他脚本。现在让敌机一直移动直到碰到闪电号,应该在“直到”后面填入的是“碰到(闪电号)”,然后把“重复执行”积木替换成刚刚拼好的“重复执行直到(碰到闪电号)”。(等待学生修改)(程序样例见“第五部分
–
程序2-3”)
【衔接话术】现在,敌机已经停下来了,下面就是让失败角色显示,并且停止游戏了。
【提问】敌机停止移动后,失败角色就要显示出来。失败角色如何能够知道敌机已经停止移动了呢?(学生回答)
【讲解】应该使用广播,让敌机在碰到闪电号后广播消息,失败在接收到消息之后,使用“显示”积木显示出来,之后使用“停止全部脚本”来停止游戏。
【提问】敌机在碰到闪电号之后才会广播失败消息,应该把“广播(失败)”放在敌机脚本积木的什么位置呢?(学生回答)
【讲解】应该放在“重复执行直到()”的下面,因为敌机碰到闪电号后就会执行“重复执行直到()”积木下的命令。(等待学生拼接)(程序样例见“第五部分
–
程序2-4和程序2-5”)
【衔接话术】到这里,失败效果就制作完成了,接下来就是添加游戏胜利的效果。游戏是在得分等于50的时候胜利,所以我们需要先添加得分,炮弹每击中一次敌机就得一分。
【提问】需要新建什么来记录游戏的得分?能够实现得分增加的积木是什么?为得分设置初始值的积木是什么?(学生回答)
【讲解】需要添加变量来记录得分,使用“将(得分)增加()”可以实现得分的增长,使用“将(得分)设为()”来设置得分的初始值。敌机碰到炮弹时得分才会增加,因此“将(得分)增加()”放在敌机角色脚本“如果碰到炮弹那么…”的里面。(等待学生拼接,拼接完成后给出答案检查)(程序样例见“第五部分
–
程序2-6”)
【衔接话术】得分已经添加完成了,接下来实现得分等于50时游戏胜利的效果。
【提问】游戏胜利时显示的效果有什么?(学生回答)
【讲解】游戏胜利时胜利角色会显示,之后游戏停止。让敌机角色一直判断得分是否等于50,在得分等于50时给胜利角色发送广播,胜利角色接收到广播胜利后,显示并停止游戏。也就是如果得分=50,那么广播胜利。(等待学生拼接,之后给出答案检查)(程序样例见“第五部分
–
程序2-7和程序2-8”)
1.在敌机从上方随机边缘出发这一步中,在()和()之间取随机数这个积木应该放在三个移到x()y()中;
2.在实现失败和胜利效果时,注意提醒学生需要拼接脚本的积木。
【第6步】任务二梳理
【对应PPT】任务二梳理
【时长】5min1、这组积木拼接在了哪个角色上;
2、实现了什么样的效果?
在提问过程中可以进行引导性提示。
【第7步】总结与巩固
【对应PPT】总结与巩固
【时长】5min
【衔接话术】同学们这节课表现得非常棒,和老师一起帮助XXX制作了一个飞机大战的游戏,XXX收到这个游戏后肯定会特别开心的。下面呢,还有一个练习题要考考大家。
【我问你答】
在提问练习题时,可以先给出:记录每一次游戏得分,所以得分应该从0开始增加。这样的提示。
Q.小呆想要用变量记录每一次游戏的得分,这样拼接脚本可以实现吗,为什么?
A.不可以,因为没有设置变量的初始值,得分不是从0开始增加的。
五、主要程序说明
程序样例编号
程序样例与说明
对应的角色
1-1
(任务一最终版程序的一部分)
【程序1-1描述】作品运行后,不停播放背景音乐。
【背景】
1-2
(任务一最终版程序的一部分)
【程序1-2描述】作品运行后,炮弹原角色隐藏,每隔0.1秒有一个新的炮弹出现在舞台区。
【炮弹】
2-1
【程序2-1描述】敌机从(-74,180)的位置出发向下移动,被炮弹击中时发出爆炸声音并回到初始位置,到达舞台下边缘后也回到初始位置。
【敌机】
2-2
【程序2-2描述】敌机从舞台区上边缘的随机位置出发向下移动,被炮弹击中时发出爆炸声音并回到初始位置,到达舞台下边缘后也回到初始位置。
2-3
【程序2-3描述】敌机从舞台区上边缘的随机位置出发向下移动,被炮弹击中时发出爆炸声音并回到初始位置,到达舞台下边缘后也回到初始位置,在碰到闪电号时,敌机会停止移动。
2-4
【程序2-4描述】敌机碰到闪电号时会停止移动,之后广播失败消息。
2-5
(任务二的最终版程序的一部分)
【程序2-5描述】失败角色在接收到敌机发送的失败消息后会显示出来,并停止游戏运行。
【失败】
2-6
【程序2-6描述】作品运行后,得分初始化为0,敌机从舞台区上边缘随机位置出发向下移动,被炮弹击中后得分加1,播放声音爆炸并回到初始位置,继续向下移动。碰到闪电号时停止移动。
【敌机】
2-7
(任务二的最终版程序的一部分)
【程序2-7描述】得分=50时,敌机广播胜利消息。
2-8
(任务二的最终版程序的一部分)
【程序2-8描述】胜利角色接收到胜利消息后显示出来,之后停止游戏
【胜利】