龙空技术网

队列练习-第13届蓝桥杯Scratch国赛真题第6题

超平的编程课 286

前言:

眼前小伙伴们对“蓝桥杯题目及答案java”大概比较重视,大家都想要学习一些“蓝桥杯题目及答案java”的相关资讯。那么小编同时在网上收集了一些对于“蓝桥杯题目及答案java””的相关内容,希望同学们能喜欢,同学们快快来学习一下吧!

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

第13届蓝桥杯青少年组国赛于2022年5月29日举行,形式为在线考试。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。

队列练习,本题是第13届蓝桥杯Scratch国赛真题编程第6题,这是初级组的最后一题,中级组也有此题。题目要求考生编程进行队列练习,玩家根据老师发出的指令,点击对应的箭头,从而控制学生进行左转、右转和后转等动作,同时老师会判断操作是否正确,并统计正确的动作个数。

先来看看题目的要求吧。

一.题目说明

编程实现:

队列练习。

具体要求:

1). 点击绿旗,角色、背景如图所示;

2). 老师从 “向左转”、“向右转”、“向后转”三个转向指令中随机选取1个并说出;

3). 玩家根据指令点击相应箭头图标,学生会根据点击的箭头图标转向;

4). 如果玩家操作正确,老师说“正确”,学生转回面向老师方向,并在舞台左下角增加一朵小红花;

5). 如果玩家操作错误(转的方向和老师发出的指令不符),老师说“错误”,学生转回到面向老师方向,小红花不增加;

6). 接下来老师从另外两个指令中随机抽取一个方向指令并说出,重复步骤3)、4)、5);

7). 接下来老师说出剩余的第三个指令,重复步骤3)、4)、5);

8). 接下来老师说出学生做对正确动作的个数,正确个数和左下角小红花数量一致,程序结束。

评判标准:

5分:满足“具体要求”中的1);5分:满足“具体要求”中的2);10分:满足“具体要求”中的3);10分:满足“具体要求”中的4);20分:满足“具体要求”中的5);20分:满足“具体要求”中的6);20分:满足“具体要求”中的7);10分:满足“具体要求”中的8)。二.作品效果

在编程之前,先来看看作品的完整效果吧:

视频加载中...

三.思路分析

这里一共有4种不同的角色,分别是老师、学生、箭头和小红花,如图所示:

其中,老师负责发号施令以及判断对错,箭头是给玩家来点击的,学生根据玩家点击的箭头做出相应的转身动作,而小红花则用于表示正确的数量。

在这4种角色中,学生角色最为简单,它只需要在按下箭头时切换对应的造型即可;其次是箭头角色,在老师发出指令后,玩家可以按下这3个箭头中的一个,此时需要向学生角色发送广播,同时要记录按下的是哪个箭头;接下来是小红花角色,在学生做出正确动作时,需要增加一朵小红花,这里可以使用克隆或者图章来实现;最难的是老师角色,它需要发号施令,还要判断玩家操作是否正确,最后还要统计正确数量。

四.编程实现

根据上面的思路分析,我们将分5步来编写程序:

老师发号施令玩家点击箭头学生转向老师判断玩家操作正确与否增加小红花

1. 老师发号施令

老师发出的指令有3种,分别是”向左转“、”向右转“和”向后转“,一轮下来,要发出3次指令,每次指令都是随机的,但是不能重复已经发过的指令,要实现这个需求,最简单的方法是借助列表。

我们创建一个列表,将其命名为”指令列表“,并进行初始化,在老师角色中,编写代码如下:

接下来,我们先实现老师先后3次说出指令的效果,有了”指令列表“,我们就可以每次从列表中随机取出一项指令,说完后,立刻删除这条指令,然后在剩下的列表中再随机选取一条指令,重复3次即可,这部分的代码如下所示:

这里的变量”指令“,用于表示老师每次要发出的转向指令,后面在比较玩家操作是否正确的时候会用到。

2. 玩家点击箭头

一旦老师发出转向指令后,玩家就可以点击箭头来控制学生转向了,此处的关键是对点击时机的控制,在老师说出指令之前,点击按钮是无效的,并且在点击一次之后,直到下一次老师说出指令之前也是无效的,如何精确的控制这个时机呢?

答案是变量,我们可以创建一个表示游戏状态的变量,根据变量的值来决定点击是否有效,创建变量”状态“,它有三种状态,说明如下:

值为0时,表示老师说指令之前的状态;值为1时,表示老师说出指令到玩家点击之前的状态;值为2时,表示玩家已经点击,并且学生已经转向的状态;

我们需要在不同的地方来设置变量的值,在老师角色中,添加代码如下:

每次在老师说指令之前,将”状态“设置为0,一旦设置好指令,在说指令的同时,将”状态“设置为1。当状态值切换到1的时候,就可以点击了,以右箭头为例,编写代码如下:

简单说明一下,绿旗下面的代码是用于初始化的,包括设置其位置和方向。当角色被点击时,如果处于状态1,就发送一个”右转“的广播消息,同时使用变量”玩家选择“记录下玩家的选择,便于后续和老师发出的指令进行比较。需要注意的是,这里变量的值,要保持和”指令列表“中的内容是一致的,否则就无法进行比较了。

另外两个箭头的代码也基本一样,不同的地方有三个,分别是初始位置、发送的消息名称以及变量”玩家选择“的值,这里就不再列出代码了。

3. 学生转向

学生角色是最简单的, 它有4个造型,如下图:

当接收到箭头发送的广播消息后,根据不同的消息切换相应的造型即可,同时设置好变量”状态“的值,切换到学生角色,编写代码如下:

当学生完成转身动作后,将”状态“设置为2,表示学生已经转向完毕,老师就可以判断转向正确与否了。

4. 老师判断玩家操作正确与否

一旦学生转身完毕,老师就需要判断玩家的操作了,判断的时机是变量”状态“值为2的时候,判断的依据是变量“指令”和变量“玩家选择”是否相等,如果相等,则说正确2秒,否则说错误2秒,在老师角色中,增加如下代码:

注意代码的位置,在说指令后,就一直处于等待状态,等到状态为2时,也就是学生转身之后才开始判断,判断完毕,需要给学生发送一个“复位”的广播,让学生面向老师,最后才是从列表中删除当前项。

切换到学生角色,增加代码如下:

5. 增加小红花

在老师说“正确”的时候,需要在舞台左下方增加一朵小红花,因此,在老师判断玩家正确的时候,发送了一个广播消息“正确”(查看前面的代码)。

当小红花角色接收到“正确”消息时,就需要增加一朵小红花了,增加的方式有两种,一是克隆,二是图章。关于克隆技巧,之前已经介绍过很多遍了,这一次,我选择使用图章,切换到小红花角色,编写代码如下:

代码很容易理解,先将小红花角色移到左下角,隐藏起来,每次判断正确的时候,将变量“正确数量”加1,就在当前位置使用图章复制一朵小红花,然后右移40步,从而确保小红花一字摆开。

当一轮练习完成之后,也就是循环结束之后,老师需要说出做对的动作数量,在老师角色代码的最下方,添加代码如下:

至此,整个作品就创作完了,接下来是测试和游玩的时间了。

五.总结与思考

本题的总代码量为86个积木块,还是有一定难度的,涉及到的知识点主要包括:

列表及相关操作,包括创建、增加数据、获取列表项和删除数据;事件广播机制,包括发送广播消息和接收消息;变量的使用,尤其是使用变量来表示状态的编程技巧;图章的使用;外观指令的使用,包括切换造型和说话指令;运算符的使用,包括随机指令、连接字符串和比较运算符;循环和双分支条件语句的嵌套使用。

本题的综合性比较强,涉及的知识点也比较多,要想在规定的时间里完成创作还是挺有难度的,除了要具备良好的编程基础外,还需要有快速分析问题和定位问题的综合能力。

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

标签: #蓝桥杯题目及答案java