[导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第3讲。
第12届蓝桥杯青少年组国赛于2021年5月29日举行,本次赛事仍然采取了在线考试。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。
密室逃脱,本题是第12届蓝桥杯Scratch国赛真题编程部分的第5题,初级组和中级组都有此题。题目要求考生使用Scratch编程实现密室逃脱游戏,难度系数为5,分值为100分。
密室逃脱本是一款实景逃脱类游戏,具有较大的趣味性及挑战性,和Scratch编程能擦出怎样的火花呢,我们一起来看看吧。
先来看看题目说明和具体要求。
题目说明
编程实现:
密室逃脱
具体要求:
1). 点击绿旗,出现对应的角色与背景;
![图片[1]-scratch密室逃脱_第12届蓝桥杯scratch国赛真题教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-17.png)
2). 点击一下床上的蓝色钥匙后,钥匙可以跟随鼠标指针移动;
3). 拖动鼠标将钥匙移到床头柜的第三个抽屉的钥匙孔处,出现对话框“抽屉打开”,等待1秒蓝色钥匙消失,可以从抽屉中拿出红色钥匙,红色钥匙出现在画面中;
![图片[2]-scratch密室逃脱_第12届蓝桥杯scratch国赛真题教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-18-1024x388.png)
4). 点击一下红色钥匙,红色钥匙跟随鼠标指针移动,移动到电脑桌第一个抽屉的钥匙孔处,出现对话框“抽屉打开”,等待1秒红色钥匙消失,可以从抽屉中拿出白色门卡,白色门卡出现在画面中;
![图片[3]-scratch密室逃脱_第12届蓝桥杯scratch国赛真题教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-19-1024x384.png)
5). 点击一下门卡,门卡可以跟随鼠标指针移动,碰到紫色把手消失,密码锁会随机说出5个数字(0-9),输入由这5个数字组成的最大五位数并出现输入框;
![图片[4]-scratch密室逃脱_第12届蓝桥杯scratch国赛真题教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-20.png)
6). 如果输入的最大五位数正确,提示:“正确,门打开”,如果输入最大的五位数错误,提示:“请重新输入(还有一次机会)”,两次机会全部输错,提示:“错误,门已锁死”。
![图片[5]-scratch密室逃脱_第12届蓝桥杯scratch国赛真题教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-21.png)
![图片[6]-scratch密室逃脱_第12届蓝桥杯scratch国赛真题教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-22.png)
![图片[7]-scratch密室逃脱_第12届蓝桥杯scratch国赛真题教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-23.png)
评判标准:
- 5分:满足要求1;
- 5分:满足要求2;
- 15分:满足要求3;
- 15分:满足要求4;
- 20分:满足要求5;
- 40分:满足要求6。
效果预览
先来看看作品的完整效果吧,请看视频:
思路分析
根据题目描述,我们可以绘制一个流程图来整理思路,如图所示:
![图片[8]-scratch密室逃脱_第12届蓝桥杯scratch国赛真题教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-24-839x1024.png)
整个程序的流程相对比较简单,重难点在于如何获取随机生成的5位数字所能构成的最大数,从而判断玩家输入的密码是否正确,这里肯定会用到列表数据结构,具体怎么实现呢,你可以先思考一下,我们稍后会详细讲解。
程序实现
我们再来看一下,本题涉及到的角色有哪些,如图所示:
![图片[9]-scratch密室逃脱_第12届蓝桥杯scratch国赛真题教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-25-892x1024.png)
可以看到,这里有4个角色,结合上面的流程图,我们可以按照角色的顺序来编写程序。
1. 蓝色钥匙
对于蓝色钥匙角色而言,主要有3个小功能:
- 初始化设置
- 点击钥匙,让钥匙跟随鼠标移动
- 打开抽屉,拿到红色钥匙
先上代码,如图所示:
![图片[10]-scratch密室逃脱_第12届蓝桥杯scratch国赛真题教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-26.png)
其中,初始化包括位置设定和显示,以确保每次游戏开始时,蓝色钥匙是出现在床上。
对于按下鼠标的处理,并没有使用“当角色被点击”指令,而使用了“等待条件“指令,这样可以确保蓝色钥匙只能被点击一次,以及只有在点击绿旗之后才可以点击钥匙。这是一个非常有用的Scratch编程小技巧,可以让程序更加严谨,减少不必要的bug。
打开抽屉,这里使用的是颜色碰撞检测,一旦碰到蓝色钥匙孔,就可以说”抽屉打开“了,然后隐藏蓝色钥匙。
打开抽屉,就找到了红色钥匙,从蓝色钥匙角色到红色钥匙角色,涉及到跨角色之间的通讯,这需要使用事件广播机制,所以最后发送了一个广播”找到红色钥匙“,这就好比是蓝色钥匙角色给红色钥匙角色打了一个电话。
2. 红色钥匙
红色钥匙角色的效果和蓝色钥匙基本一致,所不同的地方有如下3点:
- 位置不同
- 开始时处于隐藏状态
- 碰到红色钥匙孔才能拿到门卡
红色钥匙有两个代码块,一个是绿旗代码块,表示初始状态,另一个则是在接收”找到红色钥匙“广播需要处理的代码,具体代码如下:
![图片[11]-scratch密室逃脱_第12届蓝桥杯scratch国赛真题教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-27.png)
同理,在说”抽屉打开“并隐藏自己之后,需要通知门卡角色,因此在代码的最后添加了一个广播”找到门卡“指令
3.白色门卡
门卡角色的逻辑和代码基本是一样的,这里就不再赘述了,直接上代码:
![图片[12]-scratch密室逃脱_第12届蓝桥杯scratch国赛真题教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-29.png)
在门卡角色隐藏之后,需要给密码锁角色发送一个”找到锁了“的广播消息。
4.密码锁
在接收到门卡角色发送的”找到锁了“的广播消息后,需要实现如下3个小功能:
- 生成随机密码
- 提示用户输入密码
- 判断密码是否正确
这是本题的重难点,是考验孩子逻辑思维能力和处理数据能力的时候了。
首先,我们来生成随机密码,密码是一个5位数,每一位都是从0~9之间随机取数,思路其实也挺简单的,就是按万、千、百、十、个的顺序依次从0~9之间取一个随机数。
具体实现也非常简单,先定义一个变量”数字串“并设置为空,然后使用字符串连接运算,逐个将每一位上的数字进行连接,同时将这些数字保存到”数字“列表中,便于后续处理,这部分的代码如下:
![图片[13]-scratch密室逃脱_第12届蓝桥杯scratch国赛真题教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-30.png)
其次,我们要通过”数字“列表获取密码,密码是由这5个数字组成的最大5位数。针对这个需求,通常的做法对列表进行排序,然后依次将5个数拼成一个数字,只是这种方式难度有点大,很多孩子一时还掌握不了。
超平老师在这里告诉你一个简单的算法,保证每个孩子一学就会。细心的你也许已经发现了,这5个数字都是一位数,取值范围是0~9。我们可以换个思路,针对这5个数字,让每个数字都和9进行比较,如何相等,那么这个数字就位于密码数字的高位,接着依次和8、7、6、5、4、3、2、1、0进行比较,一轮下来,就可以得到最大5位数了。
这里需要用到计数循环以及嵌套循环,为了简化代码,可以使用自制积木来获取最大5位数作为密码,代码如下:
![图片[14]-scratch密室逃脱_第12届蓝桥杯scratch国赛真题教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-31.png)
然后就可以在询问之前调用这个自制积木来获取所谓的密码,并保存到变量”密码“中。
接下来,玩家在输入框中输入一个数字作为密码,并判断密码是否正确。由于这里最多只有两次机会,根据上面绘制的流程图,我们只需要使用两个”如果…那么…否则“指令就可以,具体代码如图:
![图片[15]-scratch密室逃脱_第12届蓝桥杯scratch国赛真题教程-超平的编程课](https://www.wangchaoping.com/wp-content/uploads/2025/02/image-32.png)
至此,整个功能就全部实现完毕。
总结与思考
本题难度中等,没有特别复杂的逻辑,总代码量为92个积木块,重点考察了如下6个知识点:
- scratch问答模块,包括“询问并等待”和“回答”两个指令;
- 变量和列表的使用,尤其是结合循环遍历列表数据;
- 字符串连接运算;
- 两种循环的灵活使用,即直到循环和计数循环;
- 等待条件指令的妙用;
- 事件广播机制;
当然,更为重要的是要学会使用计算思维,对问题进行拆解、分析并逐个解决,这是一个让孩子终身受益的思维能力。
需要素材和源代码的,可以转到这里,密室逃脱-2021.5.29蓝桥杯国赛第5题。
暂无评论内容