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

文摘   教育   2024-09-10 20:45   湖北  

[导读]:超平老师的《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). 如何更好地设置松鼠的方向,确保松鼠的方向一开始就是正确的,如果松果在右方,松鼠一开始就要面向右方,否则一开始就面向左方。

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

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

需要素材和源码的,可以添加本人微信

另外,超平老师创建了一个蓝桥杯备考交流群,这是专门为老师和家长打造的免费社群,您可以与来自全国各地的老师、家长共同交流经验,分享学习心得。

超平老师也会给大家带来及时的赛事动态,备考攻略,真题资源分享,帮助各位更好备考第15届蓝桥杯赛事,力争取得优异的成绩。

扫码或长按加入微信群

超平的编程课
青少儿编程教育专家,中国人民大学硕士,大学讲师,曾任知名上市机构金牌讲师,16年编程教研经验。大耳猴少儿编程联合创始人,致力于通过编程教育提升孩子的逻辑思维、数学思维和计算思维,迎接AI时代。
 最新文章