打地鼠游戏-第14届蓝桥杯STEMA测评Scratch真题精选
创始人
2024-05-28 13:12:08
0

 [导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第102讲。

蓝桥杯选拔赛现已更名为STEMA,即STEM 能力测试,是蓝桥杯大赛组委会与美国普林斯顿多文化教育研究中心合作推出的考试项目。STEM能力测试致力于综合评价学生的 STEM 水平,对学生的科技素养、逻辑思维和编程能力等三方面进行客观科学的测试。

打地鼠游戏,本题是2023年1月15日举行的第14届蓝桥杯STEMA考试Scratch图形化编程真题初/中级组编程部分第4题。题目要求编程实现打地鼠游戏,通过鼠标控制锤子移动,在出现地鼠的地洞处点击锤子,被锤子砸中的地鼠出现眩晕后消失。

先来看看题目的要求吧。

一.题目说明

编程实现:

打地鼠游戏:通过鼠标控制锤子移动,在出现地鼠的地洞处点击锤子,被锤子砸中的地鼠出现眩晕后消失。

具体要求:

1). 运行程序,角色、背景如图所示(变量"分数”初始值0);

2). 鼠标点击右下角的“START”,进入游戏操作界面;

3). 等待1秒后,锤子持续跟随鼠标指针移动,按下一次鼠标左键,锤子砸下后拾起;

4). 一个地鼠在1-2秒的随机时间内在任意一个地洞中出现,如果地鼠未被锤子砸中,它会在1-2秒时间后消失;

5). 地鼠如果被锤子砸中,此时地鼠切换造型0.2秒,当它消失后分数+1;

6). 重复持续4)、5)步骤。

评判标准:

  • 2分:满足“具体要求”中的1);

  • 2分:满足“具体要求”中的2);

  • 5分:满足“具体要求”中的3);

  • 8分:满足“具体要求”中的4);

  • 5分:满足“具体要求”中的5);

  • 3分:满足“具体要求”中的6)。

二.思路分析

本题包含两张背景图片,如图所示:

对于背景而言,当点击绿旗时,切换到带有标题的背景1,当点击开始按钮后,切换到背景2。

角色则有3个,分别是开始按钮、锤子和地鼠,如图所示:

其中锤子角色和地鼠角色都有两个造型,从功能方面来考虑,开始按钮角色最为简单,绿旗点击时,显示在右下角,点击按钮后,按钮消失。

锤子角色的功能有如下两点:

  • 跟随鼠标移动

  • 点击鼠标时切换造型

相对来说,地鼠角色是本作品的重难点,其功能有如下两点:

  • 随机在8个洞口出现

  • 被锤子砸中时消失并增加分数

乍一看,好像挺简单的,但是真正到编写代码的环节,才发现有些棘手。

主要有如下3个问题需要考虑:

  • 地鼠需要克隆吗?

  • 如何随机一个洞口?

  • 被锤子砸到或者1-2秒后地鼠都要消失,如果同时对这两个场景进行判断?

第一个问题比较简单,是否需要克隆的判断依据是在同一时刻,舞台上是否会出现多个角色,如果是就需要克隆,如果不是,则无需克隆。根据题目描述,在同一时刻,舞台上的地鼠只有一个,所以无需克隆,当然,你用克隆也是可以实现的。

针对第二个问题,仔细观察这里的8个洞口,呈椭圆形分布,并不是一个非常规则的排列,因而无法通过简单的计算获取坐标。不过,我们可以换一个思路,先用3步定位法获取每个洞口的x、y坐标,并使用列表保存起来,然后就可以结合随机数指令随机一个洞口。

第三个问题相对要麻烦一点,我们不妨这样分析,先不考虑锤子打地鼠的情况。当地鼠出现后1-2秒就消失,这个比较简单,在这个过程中,还需要判断地鼠被锤子砸到的情形,如何在等待的同时进行判断呢?

可以使用广播事件机制,让等待和判断并行执行,同时需要确保当一方条件满足时,另一方需要停止执行代码。比如当锤子砸到地鼠时,地鼠消失并增加分数,同时要停止等待1-2秒隐藏的代码,然后重新出现地鼠。

接下来,我们就进入具体的编程实现环节。

三.编程实现

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

  • 初始化设置

  • 点击开始按钮启动游戏

  • 锤子角色

  • 地鼠角色

1. 初始化设置

初始化设置包括如下3个方面:

  • 背景及各个角色的位置和状态(显示和隐藏)

  • 分数变量

  • 列表,用于保存洞口坐标

我们从开始角色入手,在开始角色中,编写代码如下:

关于背景的设置,可以放在舞台背景中,也可以放在任何一个角色中,为了简单起见,直接写在开始角色中。

然后是锤子角色,设置一下位置、方向和造型,并隐藏起来,切换到锤子角色,编写代码如下:

最后是地鼠角色,将其隐藏起来即可,由于分数和洞口位置都是和地鼠角色相关的,因此我们将变量和列表的初始化也放在地鼠角色中。

创建一个”分数“变量,再创建两个列表,分别命名为”坐标x“和”坐标y“,并使用3步定位法的编程技巧快速确定好每个洞口的x、y坐标,并通过代码将坐标值分别存入列表中,在地鼠角色中,编写代码如下:

别忘了清空列表,一共有8个洞口,从上到下自左至右依次添加,每次添加一组,添加后的列表数据如下:

如此一来,初始化工作就全部完成了。

2. 点击开始按钮启动游戏

当点击开始按钮角色时,启动游戏,进入游戏界面,首先是开始角色,它需要隐藏,同时需要切换舞台背景,对应的代码如下:

锤子角色和地鼠角色怎么知道你点击开始按钮了呢?打个电话通知一下呗,所以这里使用了”广播开始“指令。

3. 锤子角色

启动游戏后,锤子角色切换到显示状态,1秒后跟随鼠标移动,如果按下鼠标,则切换两次造型,表示锤子砸下的效果。

切换到锤子角色,编写代码如下:

代码不难理解,但有一个细节需要注意,在Scratch中,编写按下鼠标的操作时,通常有一个固定的写法,如下:

之所以增加了一个”等待按下鼠标不成立“指令,是为了避免按下鼠标时重复执行多次的奇怪效果,一般来说,从鼠标按下到松开才算是一次完整的按键操作,这是一个非常重要的编程技巧,一定要理解并掌握好。

4. 地鼠角色

接下来就是地鼠角色了,根据前面的思路分析,我们需要使用事件广播机制实现代码并行执行。

为了达到更好的效果,我们需要使用两次广播机制,第一次是启动游戏时的广播,第二次是在地鼠出现后。

当地鼠接收到”开始“广播后,先发送一个”出现地鼠“的广播,代码如下:

为什么要这么写呢,你可能会觉得有点多此一举了,我们暂且先放一下,稍后再说明原因。

当接收到”出现地鼠“的广播消息时,地鼠会随机一个洞口出现,出现之后有两种情况会消失,一是被锤子砸到,二是等待1-2秒之后,对应的代码如下:

简单说明3点:

1). 由于在列表中保存的x、y坐标是成组的,需要通过相同的编号随机获取一组坐标,因此我们需要先得到一个1-8之间的随机数作为编号,所以这里使用了变量”洞口编号“;

2). 当地鼠显示之后,如果不考虑被砸中的话,1-2秒后会隐藏,然后再次出现,怎么再次出现呢,直接给自己再发送一个”出现地鼠“的广播即可,这其实间接的实现了循环效果,但为什么不是有循环呢,稍后揭晓谜底;

3). 在等待的过程中,需要判断是否被砸中,这是一个并行场景,因此发送了一个”判断是否被砸中“的广播消息;

如何判断地鼠是否被砸中了,有两种方案,如下:

  • 使用”重复执行“ + ”如果...那么“指令

  • 使用”等待条件“指令

你觉得哪一个更简单呢,显然是后者,在地鼠角色中继续编写代码如下:

代码不难,重点说明两点:

1). 判断是否被砸中,除了地鼠碰到锤子外,同时还要确保按下鼠标,即砸下锤子;

2). 如果被砸中了,切换造型,等待0.2秒并隐藏,同时增加分数,还有一点非常重要的是要停止该角色的其他脚本。这样一来,前面的代码块就终止了,从而确保了逻辑的正确性,最后再发送一个”出现地鼠“的广播,重复这个过程;

我们再来揭晓之前的谜底,为什么使用广播来实现循环,而不是直接使用重复指令。原因很简单,就是因为这里使用了”停止该角色的其他脚本“,如果是重复执行的话,一旦停止脚本,就无法再次出现地鼠了,这下你应该彻底明白了吧^_^。

至此,整个作品就创作好了,一个有趣的打地鼠游戏就创作好了,赶紧抡起你的大锤,狠狠地砸向地鼠吧

四.总结与思考

本题是初级组最后一题,分数为25分,积木块数量80个左右 ,涉及到的知识点主要包括:

  • 事件广播机制,尤其是使用广播实现循环和代码并行的编程技巧;

  • 变量的使用;

  • 列表的使用,包括插入数据和获取数据;

  • 随机数的灵活运用;

  • 判断按下鼠标操作的实现方法;

  • 等待条件指令的灵活运用。

作为初级组最后一题,本题还是有一定难度的,考察的知识点非常多,这需要考生具备扎实的编程基础,能够灵活运用各知识点,根据题目要求,完成作品的创作。

打地鼠是一个非常经典的游戏,也有各种不同的游戏版本,你完全可以充分发挥自己的创意,对作品进行改造和升级,要不要尝试一下呢?

如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香😄

需要素材和源码的,可以移步至“超平的编程课”公众号,或者联系本人。

 

相关内容

热门资讯

我班的活雷锋三年级作文【通用... 我班的活雷锋三年级作文 篇一我们班的小雷锋在我们班级里,有一个特别的小朋友,他就是我们的活雷锋。他叫...
海边作文300字三年级(精选... 海边作文300字三年级 篇一我喜欢海边,因为海边有美丽的沙滩、清澈的海水和各种有趣的海洋生物。每年暑...
三年级作文上学的路上开头【实... 三年级作文上学的路上开头 篇一一大早,天空还是微微泛着蓝色的时候,我便背上了书包,踏上了上学的征程。...
不起眼的主角作文【优选3篇】 不起眼的主角作文 篇一《小草的故事》有一天,我在花园里散步,突然发现一株小草。它生长在花园的角落,显...
家乡的环境作文三年级300字... 家乡的环境作文三年级300字20篇 篇一标题:我家乡的美丽环境我家乡是一个美丽的小镇,它位于山脚下,...
爸爸的作文【优质6篇】 爸爸的作文 篇一爸爸的作文今天是我第一次写作文,我选择写一篇关于我的爸爸的作文。爸爸是我心目中最伟大...
参观洛阳周王城天子驾六博物馆... 参观洛阳周王城天子驾六博物馆三年级作文 篇一我去洛阳参观了周王城天子驾六博物馆,感受到了历史的厚重和...
关于老师的一件事200字作文... 关于老师的一件事200字作文三年级作文 篇一今天是我上三年级的第一天,我迫不及待地走进了教室,想要见...
香水百合(通用4篇) 香水百合 篇一:追寻芬芳之旅香水百合,一种散发着迷人芬芳的花朵,常常被人们用来制作香水。它的美丽和独...
我们是一家人学生作文500字... 我们是一家人学生作文500字 篇一我们是一家人家,是一个温暖的港湾,是一个永远的归宿。在这个家庭中,...
你是我最崇拜的人小学作文(经... 你是我最崇拜的人小学作文 篇一我最崇拜的人是我的爸爸。他是一个非常了不起的人,他不仅是我的爸爸,还是...
小V过生日小学作文【实用3篇... 小V过生日小学作文 篇一我的好朋友小V过生日了!今天是她的生日,我早早地就起床了,准备给她一个惊喜。...
住在我心里的人作文【实用3篇... 住在我心里的人作文 篇一我的父亲,住在我心里的人在我心中,有一个特别的角落,专门为我亲爱的父亲而设。...
打雪仗的小学作文(优选3篇) 打雪仗的小学作文 篇一:我和朋友们的欢乐雪战冬天来了,大地披上了洁白的雪衣。我和朋友们迫不及待地跑到...
中秋赏月的小学作文(优质6篇... 中秋赏月的小学作文 篇一中秋佳节,是我国传统的重要节日之一。这一天,我们会和家人、朋友一起赏月、吃月...
坐地铁和摘小番茄作文【优秀3... 坐地铁和摘小番茄作文 篇一坐地铁和摘小番茄我喜欢坐地铁,因为它是一种方便快捷的交通工具。每天上下班,...
两代鸟的交谈作文【推荐3篇】 篇一:两代鸟的交谈近日,我在公园里目睹了一场令人惊叹的景象,一只年轻的鸟儿和一只老年鸟儿正在愉快地交...
一年级关于英雄事迹的作文50... 一年级关于英雄事迹的作文500字 篇一:《我的英雄》我的英雄是我的爸爸。他是一位普通的上班族,每天都...
记一件事小学生作文(精彩6篇... 记一件事小学生作文 篇一我和小狗的故事今天,我要给大家讲一个关于我和小狗的故事。这个故事发生在我上小...
抗击新型肺炎作文【通用5篇】 抗击新型肺炎作文 篇一:团结一心,共克时艰新型冠状病毒肺炎疫情突如其来,给我们的生活带来了巨大的冲击...