乒乓球游戏-第12届蓝桥杯Scratch选拔赛真题精选

[导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第81讲。

蓝桥杯选拔赛每一届都要举行4~5次,和省赛、国赛相比,题目要简单不少,再加上篇幅有限,因此我精挑细选了一部分题目进行解读。

第12届蓝桥杯青少年组第6次选拔赛于2021年3月27日举行,形式为线上考试。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。

乒乓球游戏,本题是2021年3月27日举行的第12届蓝桥杯Scratch选拔赛真题编程第3题,初级组和中级组都有此题,题目要求编程创作一个简单的乒乓球游戏。

先来看看题目的要求吧。

一.题目说明

编程实现:

乒乓球游戏。

具体要求:

1). 点击绿旗,舞台上出现要求的角色与背景;

2). 乒乓球随机向舞台下方移动;

3). 粉色挡板随鼠标进行左右方向的移动;

4). 粉色挡板接到乒乓球后乒乓球向舞台上方反弹;

5). 每次粉色挡板接住乒乓球,左上角分数加1;

6). 乒乓球落地,游戏结束;

二.思路分析

本题只有两个角色,分别是乒乓球和挡板,如图所示:

其中挡板角色跟随鼠标左右移动,注意y坐标是固定的,保持不变。乒乓球角色则向舞台下方运动,碰到挡板时反弹回去,如碰落地,则游戏结束。

重点是乒乓球角色,要处理好3个细节:

  • 向下运动时,方向是随机的,需要设置好随机的范围;

  • 碰到挡板时,如何计算反弹的方向;

  • 如何判断乒乓球落地。

三.编程实现

根据题目描述和思路分析,我们可以分角色来编写程序:

  • 挡板角色

  • 乒乓球角色

1. 挡板角色

对于挡板角色来说,它始终跟随鼠标指针移动,很多同学立刻会想到使用“移到鼠标”指令,但是要注意,使用这个指令角色会跟随鼠标上下左右移动。

实际上,我们只需要将角色的x坐标和鼠标的x坐标保持同步即可,在挡板角色中编写代码如下:

当然,如果你喜欢使用“移动鼠标”指令,也是可以的,只是需要再重新设置一下y坐标,代码如下:

二者效果完全一样,从理解的角度来看,前者要简单一些。

2. 乒乓球角色

绿旗点击时,将乒乓球放到舞台上边缘,然后向下移动,关键是方向该怎么设置呢?先来看下面两张图:

左图对应方向是-150,右图对应的方向是150,但是我们不能设置在-150和150之间取随机数。从这两张图来看,应该分两段,一段是左下,范围为-180到-150,一段是右下,范围为150-180,看起来似乎有点麻烦。

在Scratch中,角色方向的范围是-180到180,其中0-180表示右半边的方向,-180-0表示左半边的方向。实际上,从-180到0这个范围的方向,我们可以直接使用180-360来表示,如-180和180、-90和270、360和0,它们分别都表示相同的方向。

所以,这里的-150可以直接使用210来表示,所以我们可以直接在150和210之间取随机数了。你可以在上图所示的方向输入框中输入210,它会自动变成-150的。

因此,我们可以在乒乓球角色中编写代码如下:

设置好方向之后,角色就开始在舞台上移动,如果碰到舞台边缘就反弹,如果碰到挡板也要反弹,关键是要计算好反弹的方向。

你可以借助“碰到边缘就反弹”指令,做一个简单的实验来寻找角色反弹的规律,让角色以不同的角度到达舞台下边缘,看看反弹之前和反弹之后角度之间的关系。

如果角色以180的方向移动碰到舞台下边缘,反弹后角度为0,如果以150的方向碰到下边缘,反弹后角度为30,如果以120的方向碰到下边缘,反弹后角度为60...,相信聪明的你,已经找到规律了,反弹前后角色的角度之和为180,所以反弹角度就等于180减去当前的方向。

如果挡板没有接住,乒乓球落地了,也就是碰到底部浅蓝色的横条,游戏结束,此处可以使用颜色碰撞检测来实现。

在乒乓球角色中,继续编写代码如下:

将两段代码连接起来,就是乒乓球角色的完整代码了。

四.总结与思考

本题难度系数为3,积木块数量22个左右 ,涉及到的知识点主要包括:

  • Scratch运动编程;

  • 角色方向的灵活设置;

  • 随机数指令的使用;

  • 变量的使用;

  • 如何计算角色反弹的角度。

本题的关键是如何计算乒乓球反弹的角度,如果你找不到反弹角度的规律,可以随机设置一个反弹角度,让乒乓球能向上运动即可,只是这样的反弹效果不够自然。

在Scratch中,角色在碰到舞台边缘反弹可以分两种情况,如果是左右边缘,角色反弹前后的角度之和为0,如果是上下边缘,角色反弹前后的角度之和为180。一旦你掌握了这个规律,就可以自己创作各种和反弹相关的作品了。

估计你已经发现了,本作品中的乒乓球有时候会跑到球桌之外,你有没有什么好的办法,可以将乒乓球的运动范围限定在球桌之内呢,让我们的乒乓球游戏看起来更真实,更有趣呢?

如果你觉得文章对你有所帮助,别忘了点赞,你的鼓励是我坚持继续写下去的最大动力,Thanks♪(・ω・)ノ。

有需要素材和源码的,可以联系本人,或者移步至同名wx号。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值