[导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第38讲。
第13届蓝桥杯青少年组省赛分两次进行,这是2022年4月17日举行的第一次省赛考试,形式为在线考试。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。
打棒球,本题是第13届蓝桥杯Scratch第一次省赛真题编程第3题,初级组和中级组都有此题,题目要求考生编程呈现一次精彩绝伦的本垒打。
先来看看题目的要求吧。
一.题目说明
背景信息:
在棒球比赛中,本垒打是指击球员将对方来球击出后(通常击出外野护栏),击球员依次跑过一、二、三垒并安全回到本垒的进攻方法,是棒球比赛中非常精彩的高潮瞬间。
编程实现:
呈现一次精彩绝伦的本垒打。
具体要求:
1). 点击绿旗,角色、背景如图所示;
![图片[1]-scratch打棒球_第13届蓝桥杯省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-352.png)
2). 按下空格键,自舞台左侧抛出棒球,棒球向舞台右侧水平匀速移动;
![图片[2]-scratch打棒球_第13届蓝桥杯省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-353.png)
3). 当棒球飞到下图的位置,击球员做出挥棒动作,刚好打到棒球;
![图片[3]-scratch打棒球_第13届蓝桥杯省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-354.png)
4). 棒球被击飞,向左上角移动,且移动中棒球变大(有移动变大效果);
![图片[4]-scratch打棒球_第13届蓝桥杯省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-355.png)
5). 3秒后,棒球消失,击球员按照一垒-二垒-三垒的顺序跑垒(逆时针方向,参见视频),最终回到本垒,程序结束。
![图片[5]-scratch打棒球_第13届蓝桥杯省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-356.png)
二.效果预览
在编程之前,先来看看作品的完整效果吧:
三.思路分析
本题包含两个角色,分别是击球员和棒球,如图所示:
![图片[6]-scratch打棒球_第13届蓝桥杯省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-357-892x1024.png)
根据题目的描述,我们可以使用流程图来表示打棒球的过程,如图所示:
![图片[7]-scratch打棒球_第13届蓝桥杯省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-358.png)
从流程图来看,这是一个简单的顺序编程,但是它涉及到到击球员和棒球两个角色,需要在二者之间来回切换,这就离不开事件广播机制了。
棒球和击球员都涉及到运动,关于角色的运动,通常有三种方式:
1). 使用面向方向 + 移动指令
2). 使用将x/y坐标增加10指令
3). 使用在1秒内滑行到x,y指令
一般情况下,前面两种都需要结合循环来实现,本题中的棒球和击球员,运动的终点是明确的,使用第三种方式最简单。
四.编程实现
根据上面的思路分析,我们分三步来编写程序。
- 按下空格键,抛出棒球
- 击球员击球,棒球飞走
- 击球员跑垒
1). 按下空格键,抛出棒球
点击绿旗时,棒球是隐藏着的,当按下空格键时,从舞台左侧抛出棒球并向右运动至击球员前方,切换到棒球角色,编写代码如下:
![图片[8]-scratch打棒球_第13届蓝桥杯省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-359.png)
需要说明两点:
①. 对于按下空格键的检测和判断,这里使用了“等待” + “按下空格键”的组合指令。
②. 当棒球到达击球员前方,即坐标为(80,60)处时,击球员就要开始挥棒击球了,这里发送了一个“击球”的广播消息。
2). 击球员击球,棒球飞走
在点击绿旗时,击球员在舞台右侧举着棒球杆,一旦接收到“击球”广播,就开始挥棒了,其实就是切换造型,击球员一共有4个造型,如图所示:
![图片[9]-scratch打棒球_第13届蓝桥杯省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-360.png)
因此,击球员角色只需要切换3次造型即可,对应的代码如下:
![图片[10]-scratch打棒球_第13届蓝桥杯省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-361.png)
击球员挥棒后,会碰到棒球,因此我们可以在棒球角色中检测是否碰到击球员,当碰到击球员后,让棒球向左上方移动直至消失,在移动的过程中慢慢变大。
切换到棒球角色,添加代码如下:
![图片[11]-scratch打棒球_第13届蓝桥杯省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-362.png)
由于“在1秒内滑行x,y”指令是独占模式,也就是在移动过程中不能执行其它指令,因此,这里采取了兵分两路的策略,在滑行之前,给自己发送一个“变大”的广播消息。
当棒球飞出舞台消失后,击球员该跑垒了,所以这里发送了一个“跑垒”的广播消息。
3). 击球员跑垒
当击球员接收到“跑垒”广播后,依次跑过一、二、三垒并安全回到本垒,其实就是3次滑行动作,只需要确定好每一次滑行的坐标即可,切换到击球员角色,编写代码如下:
![图片[12]-scratch打棒球_第13届蓝桥杯省赛教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-363.png)
至此,整个作品就创作好了,赶紧欣赏一下自己的棒球本垒打精彩瞬间吧^_^。
五.总结与思考
本题难度一般,代码量不多,一共32个积木块,分值为50,涉及到的知识点主要包括:
- 外观编程,包括显示、隐藏、大小和切换造型;
- 运动编程,重点是滑行指令的使用及其特点;
- 事件广播机制,包括给自己发送广播消息;
- 等待条件指令的妙用。
需要素材和源代码的,可以转到这里,棒球本垒打-2022.4.16蓝桥杯省赛第3题。
暂无评论内容