收集松果-第15届蓝桥省赛Scratch中级组真题第4题

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

如果想持续关注Scratch蓝桥真题解读,可以点击《Scratch蓝桥杯历年真题》并订阅合集,查阅教程更方便。

第15届蓝桥杯省赛已于2024年8月24日落下帷幕,中级组编程题一共有6题,分别如下:

收集松果,本题是2024年8月24日举行的第15届蓝桥省赛Scratch中级组编程第4题,题目要求编程创作收集松果游戏。松鼠和松果出现在随机的两个方格中,然后松鼠经过最少的方格到达松果所在方格,然后松果又重新随机到一个新的方格,不断重复这个过程。

先来看看题目的要求吧。

一.题目说明

编程实现:

收集松果。

具体要求:

1). 点击绿旗,瞬间呈现 6行8列的绿色方格铺满整个舞台区域,如图所示;

图片

2). 1秒后,松果和松鼠出现在随机的两个方格中,如图所示;

图片

3). 然后,每隔0.5 秒松鼠会向上下左右四个方向选择一个方向走一格,并经过最少的方格到达松果所在方格,如图所示;

图片

4). 松鼠到达松果所在方格后,松鼠停下来,松果消失,1 秒后松果再次出现在随机的一个方格中,如图所示;

图片

5). 重复执行“具体要求”3)、4)。

评判标准:

  • 10分:满足"具体要求"中的1);

  • 15分:满足"具体要求"中的2);

  • 20分:满足"具体要求"中的3);

  • 10分:满足"具体要求"中的4);

  • 5 分:满足"具体要求"中的5)。

二.思路分析

本题有3个角色,分别是方格,松果和松鼠,如图所示:

图片

本题考查的知识点主要包括克隆技巧、变量、舞台坐标系、事件广播机制和自制积木等。

根据题目的描述,我们分3步进行分析:

  • 克隆方格

  • 随机松鼠和松果位置

  • 收集松果

1. 克隆方格

这是一个典型的克隆场景,可以直接套用超平老师总结的“克隆4兄弟”模型,又快又好。

2. 随机松鼠和松果位置

松鼠和松果要出现在随机的方格中,这就说明我们不能直接使用“移到随机位置”指令。正确的做法是在6行8列的矩阵中随机选择一个方格,并计算出对应的坐标,然后使用“移到x,y”指令。

以松鼠为例进行说明,我们可以定义两个变量“松鼠行“和”松鼠列“,用来表示松鼠所处的行和列,然后分别将它们设置为随机数字,“松鼠行“的范围是0~5,”松鼠列“的范围是0~7。

为了方便计算,我们规定列从左到右,行从下到上,并且都是从0开始,如下:

图片

比如,这里的松果位于第1行第2列,松鼠位于第3行第5列,那怎么其坐标是多少呢?

首先要确定好位于第0行第0列的格子坐标,即最左下角的方格,其坐标为(-210,-150),如图所示:

图片

由于这是一个6行8列的矩阵,所以方格是正方形的,边长为60。我们可以将(-210,-150)作为起点,然后使用偏移量来计算每个方格的坐标。

对于上图的松鼠来说,它处在第2行第2列,所以其x坐标是在-210的基础上偏移两个格子的长度,即 -210 + 2 * 60 = -90;而y坐标是在-150的基础上偏移两个格子的长度,即 -150 + 2 * 60 = -30。

需要注意的是,x坐标和列偏移相关,而y坐标则和行偏移有关。

在随机方格的时候,还需要确保松鼠和松果不在同一个方格中,这个题目是有明确说明的。

3. 收集松果

这是本题的难点,很多同学都有这样的疑问,我怎么知道哪个是最短路径呢?

其实没那么复杂,我们直接看图说话,假定松果位于第1行第2列,松鼠位于第4行第4列,如图:

图片

第一种走法,先左后下,一共需要5步,如图:

图片

第二种走法,先下后左,一共需要5步,如图:

图片

第三种走法,按照左下左下的阶梯走法,还是5步,如图:

图片

第四种走法,按照下左下左的阶梯走法,仍然是5步,如图:

图片

相信聪明的你已经看明白了,只要确定了松鼠和松果的相对位置,它们的最短路径长度是固定的,尽管路径不唯一。

所以,只需要在众多的路径(不止上面列出的四种)选择一条路径就可以了,为了简单,可以选择先行后列,或者先列后行。

如此一来,思路就非常清晰了,我们只需要判断松鼠和松果所处的行和列,根据他们的位置关系,让松鼠逐渐向松果靠近,同时要更新当前所在的行和列,当二者处在同行同列,说明松鼠吃到松果,重新随机松果位置。

思路有了,接下来,我们就进入程序实现环节。

三.编程实现

根据上面的思路分析,我们分4步来完成作品:

  • 克隆方格

  • 随机松鼠位置

  • 随机松果位置

  • 收集松果

1. 克隆方格

直接使用克隆4兄弟模型克隆6行8列的方格,在方格角色中定义自制积木如下:

图片

代码比较简单,说明两点:

1). 定义自制积木时,一定要勾选”运行时不刷新屏幕“选项;

2). 注意设置好x和y坐标的起始位置;

在方块角色中继续编写代码如下:

图片

执行代码,就可以瞬间生成一个6行8列的方格矩阵。

2. 随机松鼠位置

根据前面的思路分析,在松鼠角色中,编写代码如下:

图片

代码不多,说明4点:

1). 这里对角色做了一些初始化设置,包括旋转方式和面向,是为后面改变角色方向做准备;

2). 这里定义的两个变量”松鼠行“和”松鼠列“要提前创建好;

3). 根据松鼠所在的行和列,计算好松鼠的x和y坐标,然后显示出来;

4). 确定好松鼠的位置,发送一个”出现松果“的广播消息;

3. 随机松果位置

切换到松果角色,编写代码如下:

图片

简单说明3点:

1). 使用自制积木是为了重用代码,后面需要多次使用这个自制积木;

2). 随机位置的方式和松鼠一样,但是要确保不和松鼠重叠,所以需要使用”重复执行直到“代码块;

3). 这里使用了两个变量”松果行“和”松果列“,需要提前创建好;

然后,在接收到”出现松果“广播中调用自制积木,继续编写代码如下:

图片

别忘了在绿旗下将松果隐藏起来。

4. 收集松果

根据前面的分析,我们可以根据松鼠和松果所处的位置来移动松鼠,为了方便组织代码,在松鼠角色中定义自制积木如下:

图片

代码不少,强调4点:

1). 处理上下左右的逻辑基本是一样的,每个“如果...那么”指令处理一个方向;

2). 在修改x和y坐标的同时,也要更新变量的值,确保“松鼠行”、“松鼠列”、“松果行”和“松果列”4个变量和当前所在位置始终一一对应;

3). 在每个如果指令的结尾有一个“停止这个脚本”指令,这可以确保每次只能移动1格;

4). 左移和右移时,分别设置了松鼠的方向,这个题目没有要求,不写也是可以的;

在松鼠角色的绿旗代码块中,继续编写代码如下:

图片

代码不多,但是要理解其意思,说明3点:

1). 每隔0.5秒,调用自制积木,让松鼠自动移动1格;

2). 重复执行前进一格,直到碰到松果,说明松鼠吃到松果了,此时发送”吃掉“的广播消息给松果角色;

3). 这里使用的是”广播并等待“指令,可以确保松果的位置重新设置完之后再进行下一次移动;

对应的,切换到松果角色,编写代码如下:

图片

代码非常简单,先将松果隐藏起来,等待1秒后,调用自制积木重新随机松果位置。

至此,一个自动版本的松鼠追逐松果作品就创作好啦。

四.总结与思考

本题是中级组编程部分第4题,分数为60分,积木块数量100个左右,涉及到的知识点主要包括:

  • 克隆编程;

  • 自制积木;

  • 变量;

  • 事件广播机制;

  • 舞台坐标系;

作为本次中级组省赛的第4题,难度中等,完成时间30分钟左右。本题的难点有两个,一是在随机松鼠和松果位置时,如何确保放到格子中间,二是如何让松鼠自动追逐松果,同时确保路径长度最小。

实际上,类似的场景在第12届选拔赛中出现过,题目要求在16 * 12的方格矩阵中实现贪吃蛇游戏, 如图所示:

图片

具体可以参考《贪吃蛇-第12届蓝桥杯Scratch选拔赛真题精选》这篇教程。怎么样,是不是一模一样,所以超平老师常说,最好的备考资料就是历届真题。

如何让松鼠沿着最短路径追逐松果,看起来有些难度,但是你仔细一分析,也就那么回事。最好的分析方法就是画图列出各种不同的行走路径,找到其中的规律。

实际上,这个最短路径问题在数学和编程中十分常见,数学里面叫做标数法,编程里则是动态规划,一定要熟练掌握哦。

超平老师给你留3个思考题:

1). 为何要先随机松鼠位置,再随机松果位置呢?

2). 如何让松鼠的移动是随机的,假定松果在松鼠的右上方,当松鼠在移动的时候,第一次向右,第二次向上,第三次向上,第四次向右...;

3). 如何更好地设置松鼠的方向,确保松鼠的方向一开始就是正确的,如果松果在右方,松鼠一开始就要面向右方,否则一开始就面向左方。

你还有什么好的方法吗,非常欢迎您和超平老师交流分享。

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

需要素材和源码的,可以移步至“超平的编程课”gzh。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值