报数游戏-第13届蓝桥杯Scratch省赛真题第6题

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

第13届蓝桥杯青少年组省赛分两次进行,这是2022年4月23日举行的第二次省赛考试,形式为在线考试。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。

报数游戏,本题是第13届蓝桥杯Scratch第二次省赛真题编程第6题,是中级组最后一题,初级组没有此题,题目要求考生编程实现报数游戏。

先来看看题目的要求吧。

一.题目说明

背景信息:

5个男生和3个女生,8个人围成一个圆圈,给定一个数字n(2 ≤n ≤ 5)。从第一个开始依次报数,当报数为n时,这个人离开圆圈。然后下一个从1开始报数,再次报到n的人离开圆圈,如此循环进行游戏直至仅为5个人为止。请问游戏开始时,采用怎样的排法,才能使每次离开圆圈的都是女生,剩余的5人都是男生。

例如给定的数字为3时,每次报到3的人离开圆圈。

蓝色圆圈:男生;红色圆圈:女生。

编程实现:

报数游戏(初始由1开始顺时针报数)。

具体要求:

1). 点击绿旗,小猫说:“男生5人,女生3人,共8人”;

2). 2秒后,小猫说:“报数为2”;

按照男生为蓝色,女生为红色,每次报到2的人离开圆圈的情况下,在舞台中正确呈现男生与女生在此轮游戏中的初始位置,使得3轮报数后留下的5人都是男生;

3). 2秒后,小猫说:“报数为3”;

按照男生为蓝色,女生为红色,每次报到3的人离开圆圈的情况下,在舞台中正确呈现男生与女生在此轮游戏中的初始位置,使得3轮报数后留下的5人都是男生;

4). 2秒后,小猫说:“报数为4”;

按照男生为蓝色,女生为红色,每次报到4的人离开圆圈的情况下,在舞台中正确呈现男生与女生在此轮游戏中的初始位置,使得3轮报数后留下的5人都是男生;

5). 2秒后,小猫说:“报数为5”;

按照男生为蓝色,女生为红色,每次报到5的人离开圆圈的情况下,在舞台中正确呈现男生与女生在此轮游戏中的初始位置,使得3轮报数后留下的5人都是男生;

6).2秒后,程序结束。

二.思路分析

本题的题目较长,要仔细读题,搞懂题目的意思和逻辑,题目中分别说明了报数为2、3、4、5的玩法。关键是要搞明白,它们是或的关系,相当于是玩了4局报数游戏,每一次报的数字不同。

本题使用的角色比较多,但实际上只有3种,分别是小猫、人和数字,如图所示:

其中,数字只是用来表示每个人所在的位置,不用编写程序。人物角色则是根据自己是男是女切换造型即可,真正的重点是小猫角色。

读懂了题目,我们再来看看解决方案,针对此题,我们可以使用假设法,先假设8个人都是男生,然后从第一个人开始报数,当报数为3时,将这个人改成女生。接着下一个人又从1开始报数,重复这个过程,直到找到3个女生为止。

针对这个重复过程,需要注意两点:

1). 由于8个人围成圆圈,当第8个人报完数之后,接下来要回到第1个人;

2). 在使用假设过程中,我们只是将报数为3的人改为女生,并没有删除,如果进入下一圈报数,需要跳过女生。

三.编程实现

根据上面的思路分析,我们分3步来进行编程:

  • 完成排队核心代码

  • 小猫开始报数

  • 还原初始队形

1). 完成排队核心代码

根据题目的意思,我们需要针对数字2、3、4、5分别完成一次报数游戏,报数的过程和逻辑完全一样,为了简化代码,我们可以采取函数的编程思想,使用自制积木来实现排队功能。

创建一个自制积木,将其命名为“排队”,同时增加一个参数“n”表示报数的数字。同时,需要创建一个列表“人”,并向列表中插入8个男生,效果如图所示:

接下来就是循环判断了,从第一个人开始报数,直到女生人数变成3为止,我们需要创建3个变量,分别命名为“女生人数”、“i”和“数字”,如图所示:

其中,变量“i”表示计数器,是用于循环的,每次都从1开始,表示从第一个人开始报数。而变量“数字”则表示每个人报的数字,开始设为0,每报数一次,数字就增加1,如果数字等于目标数字n时,就需要重新设为0,此时,说明该位置的人是女生,需要将对应列表中的值修改为“女”,具体代码如图所示:

注意,这个自制积木是在小猫角色中来定义的。

2). 小猫开始报数

排队的核心功能已经完成了,接下来,就可以让小猫角色开始进行报数了。游戏之前,需要先说“男生5人,女生3人,共8人”,然后完成4次报数,这个可以使用循环来实现,代码如下:

代码不难,简要说明两点:

1). 由于报数是2、3、4、5,它们是连续的数字,所以这里使用变量“报数”来表示,每循环一次,就将变量增加1,这样就可以通过循环来实现4次报数了;

2). 每一轮完成报数后,列表中的数据就会变成5男3女了,此时需要让各个角色按照各自造型来排列,所以这里通过“广播诸神归位”指令向8个人物角色发送广播消息。

3). 还原初始队形

在排队之前,8个人物角色都呈白色造型,当接收到广播x消息后,需要根据列表中的数据来切换相应的造型,如果是男生,就切换为蓝色造型,如果是男生,就切换为红色造型,这里以第一个人物角色为例,编写代码如下:

其它7个人物角色的代码基本一致,所不同的是,每个角色和列表中的不同项进行比较,这里就不再列出代码了。

四.总结与思考

本题的总代码量为为110个积木块左右,难度系数为5,分值为100,涉及到的知识点主要包括:

  • 列表应用,包括列表的删除、添加、获取列表项和替换等操作;

  • 变量的灵活运用,尤其是借助变量实现循环的编程技巧;

  • 函数的编程思想,自制积木及其参数的使用;

  • 造型切换;

  • 循环和条件的嵌套使用;

  • 事件广播机制,包括广播消息和接收广播指令。

作为省赛中级组的最后一题,本题还是有一定难度的,考生通常卡在两个地方,一是没有彻底理解题目的意思,二是没有想到假设法的编程技巧。

针对第一点,主要还是考验孩子的阅读能力和耐心,而第二点则和数学思维息息相关,在小学数学中,有很多和假设法相关的解题技巧,这些技巧其实是通用的,数学中可以使用,编程中同样可以使用,这其实体现了孩子的跨学科应用能力。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
蓝桥杯scratch省赛真题是指蓝桥杯编程大赛中使用Scratch编程语言进行的省级比赛的问。具体的目会根据每年的比赛而有所不同,以下是一个例子: 目要求创建一个游戏,模拟猴子爬楼梯的场景。猴子每次可以爬1到3级的楼梯,目标是爬到楼梯的最顶层。玩家可以通过按键来让猴子爬楼梯,同时需要显示猴子当前所在的楼梯层数以及已经爬过的楼梯数量。 首先,我们需要使用Scratch中的精灵功能来创建一个猴子的角色,可以自定义猴子的造型和动作。接下来,我们需要创建一个楼梯场景,可以使用Scratch中的背景功能来绘制楼梯。可以使用简单的图形表示楼梯,比如长方形。 之后,我们需要添加按键事件,让玩家输入按键来控制猴子的爬楼梯动作。可以使用Scratch中的事件功能来实现按键事件的触发。当玩家按下某个按键时,猴子开始向上爬楼梯。可以使用Scratch中的运动功能来控制猴子的位置,让其向上移动相应的楼梯层数。 同时,我们需要计算猴子当前所在的楼梯层数和已经爬过的楼梯数量。可以使用Scratch中的变量功能来记录这些信息。当猴子爬上一级楼梯时,楼梯层数加一,已经爬过的楼梯数量也加一。可以使用Scratch中的运算功能来实现变量的加法操作。 最后,我们需要添加判断条件,当猴子爬到楼梯的最顶层时游戏结束。可以使用Scratch中的控制功能来实现判断条件。当猴子的位置达到最顶层时,显示游戏结束的提示信息,并停止猴子的爬楼梯动作。 通过以上步骤,我们可以完成蓝桥杯scratch省赛真题中的猴子爬楼梯游戏。这个例子中只是其中的一个目,实际比赛中的问会更加复杂和多样化。但无论目怎样,我们都可以通过使用Scratch的各种功能和编程思维,去解决这些问

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值