捉迷藏之三-第10届蓝桥杯Scratch国赛真题第6题程序3

本文同步发表于”超平的编程课“公众号,更多教程,可移步至公众号。

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

第10届蓝桥杯青少年组国赛于2019年5月25日举行,形式为线下考试,考生自带电脑。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。

捉迷藏,本题是第10届蓝桥杯Scratch国赛真题编程第6题,也是最后一题,题目比较复杂,共分为4个程序,我们将分4次来解读和学习,这是第3篇,对应于程序3,题目要求考生在程序2的基础上,增加一个捉迷藏的小动物,编程实现两个小动物随机藏到6个前景角色后面,当两次点击都正确找到小动物藏身的前景角色的情况下,才算游戏过关,否则游戏失败。

先来看看题目的要求吧。

一.题目说明

编程实现(以程序2为基础改进):

增加一个捉迷藏的小动物(以下以小老鼠“Mouse1”为例)。

游戏开始时6个前景角色以两行三列排列方式随机出现,两个小动物随机藏到6个前景角色后面,但每个前景角色后面只能藏一只小动物。

在两次点击都正确找到小动物藏身的前景角色的情况下,才算游戏过关,否则游戏失败。

具体要求:

1). 点击绿旗后,游戏开始,小猫在屏幕左下角,小老鼠在右下角,显示随机背景,6个前景角色都消失。等待1秒钟后,6个前景角色同时出现,按照两行三列的方式排列在舞台上,但每次6个前景角色的排列顺序随机变。注意:这6个前景角色不要挡住两个小动物。

2). 等到6个前景角色显示出来后,小猫和小老鼠都说“我要开始藏了,来找我哦!”2秒钟,然后分别随机藏在某个前景角色后,只露出一点点痕迹。

注意:每个前景角色后只能藏一只小动物;对于新增加的小老鼠角色,不论它藏在哪一个前景角色后面,都同样要露出且只能露出一点点痕迹。

3). 当玩家点击某个前景角色时,如果有小动物藏在这个前景角色后,则这个小动物现身并说“哇,你找到我啦!”1秒钟。

当玩家点击某个前景角色时,如果没有小动物藏在这个前景角色后,则还没被找到的小动物现身(一个或者两个小动物)并说“Hi,我在这儿呐!”2秒钟,然后小猫说“游戏失败!”游戏失败,程序结束。

如果两只小动物先后被正确找到,则两个小动物在说完“哇,你找到我啦!”之后。还要同时说“你真棒!”2秒钟,游戏过关,程序结束。

评判标准:

  • 0分:程序2未得到满分;

  • 20分:符合具体要求1);

  • 40分:在20分标准的基础上,符合具体要求2);

  • 50分:在40分标准的基础上,符合具体要求3)。

二.思路分析

本题是在程序2的基础上进行改进的,关于程序2可以参考上一篇,捉迷藏之二-第10届蓝桥杯Scratch国赛真题第6题程序2

相信看完题目要求的你已经感觉到了,和前面的程序1和程序2相比较,程序3的难度大大提升,功能变多,逻辑也更为复杂,主要表现为下面3点:

1). 6个前景角色的位置不再是固定的,而是随机分布的;

2). 增加了1个老鼠角色,小猫和老鼠角色一起玩捉迷藏游戏,尤其要注意,两个角色要分别藏在不同的前景角色后面;

3). 对胜利和失败的判断逻辑更为复杂。

针对第1点,可以借助列表,将6个位置的x、y坐标先保存起来,然后使用事件广播机制让6个角色逐个出现,并且每次随机从列表中选取一对坐标,一旦设置好角色位置后,立刻从列表中删除对应的x、y坐标,从而确保下一个角色不会取到相同的坐标。

针对第2点,也可以采取相同的方法,使用一个列表保存可藏位置,列表中有6个数字,分别为1-6,先让小猫从列表中随机取一个数字,根据不同的数字让小猫藏到对应的前景角色后面,同时删除这个数字。接着,让老鼠从列表中随机取一个数字,并藏到对应的位置。

针对第3点,重点要注意失败的情形,一共有两种,一是一个都没有找到,二是只找到其中一个。针对后者,找到的有可能是小猫,也有可能是老鼠,针对这些不同的情况,都需要分别处理,做到不重复不遗漏。

三.编程实现

根据上述思路分析,我们分3个步骤来编写程序:

  • 6个前景角色随机排列

  • 小猫和老鼠躲藏

  • 判断胜利和失败

1. 6个前景角色随机排列

根据上面的分析,先创建两个全局列表,分别命名为“x坐标”和“y坐标”,用于保存6个前景角色的位置,并对列表进行初始化,代码如图所示:

这段代码可以写在任何一个角色中,为了方便起见,我们将它放在Apple角色中,执行这段代码,两个列表中的数据如下:

接下来我们按照Apple、Basketball、Nano、Rocks、Dog2、Hedgehog的顺序依次来编写程序。

切换到Apple角色,作为第一个排列的角色,它有6个可选位置,其代码如下:

执行这段代码,Apple角色的位置就确定好了,同时两个列表中都只剩下5个内容,接着需要给Basketball角色发送广播,所以在代码块的末尾添加了“广播角色2出现”指令。

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

和Apple角色的代码基本相同,所不同的是这一次只有5个位置可选,因此将i设为在1和5之间取随机数,完成之后,再向下一个角色发送广播消息。其它4个角色的代码基本相同,这里就不再列出了。

2. 小猫和老鼠躲藏

先添加一个老鼠角色,并创建好全局列表“可藏位置”,将数字1-6加入到列表中,在小猫角色中编写代码如下:

接下来,我们就可以从列表中随机选取一个数字,并将小猫移到相应的位置,修改小猫角色代码,如下:

代码虽长,但大部分代码是在程序1中已经写好的,这里只是做了一些修改,说明如下:

1). 比较的不是”位置“变量,而是”可藏位置的第位置项“,小猫位置一旦确定,就需要从列表中删除这一项,这样就可以避免老鼠和小猫位置重叠了。

2). 这里的变量”猫状态“,用来表示小猫是否找到,设为0表示还没有找到。

小猫藏好之后,就该老鼠藏了,所以这里发送了一个广播消息,当老鼠接到广播消息后,在”可藏位置“列表中剩下的5个数字中随机选取一个即可,代码和上述代码基本相同,这里就不再列出了。

同理,在老鼠藏好之后,将”老鼠状态“变量设为0,表示老鼠还没有找到。

3. 判断胜利和失败

当点击前景角色时,就要开始判断游戏胜利和失败了,6个前景角色的代码基本一致,以Apple为例,其代码如下:

代码的逻辑也比较好理解,如果找到小猫,就发送广播消息”找到猫“,如果找到老鼠,就发送广播消息”找到老鼠“,如果都没有找到,就发送广播消息”错了“。

当找到小猫时,需要在小猫角色中做相应处理,并判断是否已经找到老鼠了,其代码如下:

同理,当找到老鼠时,也需要做相同的处理,在老鼠角色中编写代码如下:

在接收到”错了“消息广播后,小猫和老鼠角色也需要做相应的提示,对于老鼠角色而言,非常简单,只需要说”Hi,我在这儿呐“,其代码如下:

小猫角色相对则要麻烦一点,它还需要承担说”游戏失败”的任务,其代码如下:

最后,当游戏胜利了,小猫和老鼠同事说“你真棒!”,在小猫和老鼠两个角色中添加如下代码:

至此,整个作品就创作完成了,你可以开心地玩一玩捉这个游戏,休闲一下咯^_^。

四.总结与思考

本题是捉迷藏的程序3,还是挺有难度的,涉及到的知识点包括:

  • 列表的应用及具体操作;

  • 随机数的应用,尤其是和列表的结合;

  • 变量的使用,尤其是使用变量来表示某种状态;

  • 事件广播机制的灵活运用;

  • 跨角色复制代码的编程技巧。

程序3难度陡然提升,难倒了不少考生,这里的关键是要搞清楚程序的逻辑,整理好思路,然后一步一步实现,也就是计算思维中的拆解方法,将复杂问题分解成若干简单问题,这是数字时代每个孩子都需要掌握的思维模型,这也是少儿编程的价值所在。

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值