题目:2019-9-7Scratch二级考试编程题
37题:制作蝙蝠冲关游戏
- 准备工作
- 导入蝙蝠角色、分别绘制障碍物、大地角色
- 功能实现
- 需要达到的效果:通过键盘上的空格键控制蝙蝠往上飞,当碰到障碍物或者大地时,游戏结束,否则得分
- 蝙蝠角色:当点击绿旗,蝙蝠自上往下飞,当按下空格键,蝙蝠往上飞,当碰到障碍物或大地时,停止全部
- 障碍物角色:障碍物不断自左向右移动,障碍物达到最右端后,又回到最开始的位置,向右运动,重复这个过程
- 大地角色:移至最上层
案例分析:
- 这道题呢是2019年9月7日中国电子学会第四期青少年软件编程等级考试scratch二级考试的真题
- 题目本身有一点点难度,有多个角色,每个角色有自己的动作实现;
- 小朋友认真审题,看清楚题目的功能实现其实发现并不会很难,主要是控制蝙蝠躲避障碍,同时尽量不要让蝙蝠落在地上
- 角色分析:蝙蝠、障碍物、大地
- 背景分析:白色背景
- 当启动程序之后,蝙蝠自上往下飞,按空格键后,蝙蝠会往上飞,碰到障碍物或者大地,停止全部程序,否则得分一直往上加;同时障碍物从左往右移动,到达最右边的时候又返回起始位置从新开始向右移动,大地模块移至最上层。
流程分析
- 通过题目,我们可以分析到蝙蝠有多个程序并列执行;有一个程序启动的开始程序块,还有一个按下空格键的程序块,为了实现蝙蝠飞行逼真效果,还可以增加一个造型切换模块
- 蝙蝠1:开始→初始位置→初始化得分变量→飞行【减少角色Y坐标值→判断是否碰到障碍物或者大地 是(停止全部脚本)→得分增加→时间戳】
- 蝙蝠2:当按下空格键→角色Y坐标值增加
- 蝙蝠3:开始→初始造型→造型切换【时间戳→下一个造型】
- 障碍物:开始→初始位置→向右移动【移动步数→判断是否到达最右边 是(返回初始位置)→时间戳】
- 大地:开始→移到最前面
用到的指令模块
运动模块
- :角色移动指定的步数
- :角色的X坐标值,通过这个来控制障碍物是否到达最右边
- :将角色Y坐标增加指定的值
- :角色移到舞台中指定的坐标位置(X,Y)
外观模块
- :将角色的造型换成指定的造型
- :切换角色造型为下一个造型,如果是最后一个造型就会从新回到第一个造型
- :将角色移到最前面,下拉三角还可以选择最后面
事件模块
- :当小绿旗被点击时表示程序启动,该执行后面的指令了
- :当按下键盘上某个具体的键时,执行后面的程序指令
控制模块:
- :时间间隔,等待指定的时间后执行后面的指令
- :一直重复执行模块里面的指令
- :条件判断模块,如果条件返回值为真(bool值),执行那么模块里面的程序,如果条件不成立,返回值为假,执行条件判断模块后面的程序指令
侦测模块:
- :检测是否碰到指定的颜色,如果是返回bool值(真),否则返回bool值(假)
运算模块:
- :逻辑或运算,两个条件,只要满足一个条件为真,则整个逻辑运算返回bool值(真),只有两个条件都为假的情况,逻辑运算才返回bool值(假)
变量模块:
- :建立一个变量,输入变量名称,然后选择适用于所有角色还是适用于当前角色
- 本题目当中有一个得分环节,所以我们需要建立一个得分变量(可以选择适用于所有角色,也可以选择只适用于当前角色,如果选择适用于当期角色,则计分环节需要在蝙蝠的程序里面进行实现)
角色背景设置
蝙蝠角色:
- 删除默认的猫咪角色,然后从背景库中选择蝙蝠角色(Bat)
- 同时切换到造型页面,只保留bat-a和bat-b造型,如下图所示
- 同时在角色的属性面板页面可以将角色的大小调整到适当的大小,如下图所示
障碍物角色
- 新建一个角色,在造型界面通过直线画笔工具画出障碍物的形状,然后通过填充工具填充相应的颜色,如下图所示
大地角色
- 和障碍物角色一样,也是新建一个角色,在造型界面通过直线画笔工具画出障碍物的形状,然后通过填充工具填充相应的颜色(和障碍物角色的颜色不一样即可),如下图所示
完整的角色和背景
- 最后所有角色和背景设置完如下图所示:
程序指令编写
蝙蝠1:
- 程序启动,执行后续指令模块
- 将蝙蝠移到舞台的正上方具体位置为(X=0,Y=180)
- 将添加的得分变量初始化清零
- 模拟蝙蝠飞行 循环执行5-9指令模块
- 实现蝙蝠从上往下飞,将Y坐标值增加负值即可,具体数值小朋友们可以自己定,但是不能太快也不能太慢
- 通过颜色检测来判断是否碰到障碍物和大地(障碍物和大地用不同颜色进行标识),如果返回条件值为真,则执行7号程序块,否则执行8及后面的程序块
- 停止全部脚本(也就是蝙蝠飞行过程中有可能碰到了障碍物或者大地)
- 将得分加1
- 时间戳,为了便于观看以及计分
蝙蝠2
- 当按下键盘上的空格键执行后面的程序指令
- 实现蝙蝠往上飞,也就是将蝙蝠的Y坐标增加,这里特别要强调的是,增加的这个值一定要大于蝙蝠自上往下飞的那个值
蝙蝠3
- 程序启动,执行后续指令模块
- 将蝙蝠的造型换成指定的造型
- 实现飞行过程中视觉效果比较逼真,翅膀飞行的效果,一直重复执行4-5程序指令模块
- 时间戳,造型切换的时间间隔,当然这个小朋友们也可以自己设定,不要太慢或者太快即可
- 切换到下一个造型,如果已经是角色的最后一个造型,则会返回第一个造型
障碍物
- 程序启动,执行后续指令模块
- 将障碍物移到舞台的最左边具体位置为(X=-240,Y=0)
- 模拟障碍物移动过程 循环执行4-7指令模块
- 障碍物每次向前移动指定步数,当然这里同样小朋友们可以自行设定,只是不要太快或者太慢
- 通过角色的X坐标值来进行搬到,如果X的坐标值大于230,返回条件值真(表示已经到达了最右边了),这时候就要执行6号程序块,否则执行7的程序块
- 回到初始位置,舞台最左边
- 时间戳,为了便于观看
大地
- 程序启动,执行后续指令模块
- 由于我们舞台中央是有层次结构的,所以为了边观察及模拟真实场景,题目要求大地放在最上层,也就是最前面
案例演示
【Scratch真题讲解】2019-9-7电子学会Scratch编程等级考试真题37题蝙蝠躲避障碍