红绿灯记忆游戏-第13届蓝桥杯Scratch选拔赛真题精选
第13届蓝桥杯青少年组第1次选拔赛于2021年8月14日举行,形式为线上考试。Scratch分为初级组和中级组,其中初级组面向7~10岁孩子,中级组面向11~14岁孩子。
红绿灯记忆游戏,本题是2021年8月14日举行的第13届蓝桥杯Scratch选拔赛真题编程第4题,初级组和中级组都有此题,题目要求编程创作一个记忆游戏,红绿灯三盏灯亮起后分别为红灯、黄灯和绿灯, 观察并记忆三盏灯随机亮起熄灭的先后顺序。
先来看看题目的要求吧。

题目说明

1). 运行程序,小朋友说:“3秒后开始程序,请观察红绿灯亮起的先后顺序”;
2). 红绿灯的三盏灯按照随机顺序,分别亮起和熄灭一次,每盏灯亮起同时说出灯的颜色,1秒后熄灭,间隔1秒后下一盏灯亮起;
3). 小朋友说:“请按照三盏灯的亮灭顺序依次点击舞台右下角的3个按钮”;
4). 如果点击按钮的顺序与三盏灯的亮起熄灭顺序一致,则正确次数加1,小朋友说:“对了”;
5). 如果顺序不一致,小朋友说:“错了”;
6). 完成五次游戏后,左上角显示正确次数,小朋友说出:“正确次数为*”(*表示正确次数),2秒后游戏结束。
评分标准:
5分:满足要求1);
8分:满足要求2);
8分:满足要求3);
8分:满足要求4);
3分:满足要求5);
3分:满足要求6)。

思路分析

本题一共有7个角色,如图所示:

程序实现

根据题目描述和思路分析,我们可以分5步来编写程序:
准备工作
随机点亮红绿灯并熄灭 点击按钮并记录顺序 判断对错 重复5次并统计结果
1. 准备工作
根据题目描述,一共要完成5次游戏,并统计正确的次数,因此需要创建两个变量,分别命名为“次数”和“正确次数”。
根据思路分析,创建两个列表,分别命名为“红绿灯”和“点击顺序”,然后对变量和列表进行初始化设置。
在小朋友角色中,编写代码如下:
需要注意的是,列表”红绿灯“中的数字顺序是随机的,这里使用了一个小技巧,就是第1次插入数字1,第2次随机在1之前和1之后插入数字2,它有两个位置可以选择,第3次则在列表的第一项或第二项的前面或后面插入数字3,它有三个位置可选,这样就可以得到一个完全随机的数字列表。
2. 随机点亮红绿灯并熄灭
准备工作完成后,接着就是小朋友开始提示了,然后依次亮灯,根据思路分析,我们使用”广播消息并等待“指令即可,消息的名称依次为列表中的第1项、第2项和第3项。
在上面的代码块下面,继续编写代码如下:
对应的三盏灯在接收到广播消息后,需要进行相应的处理,以红灯为例,它接收到的是消息1,编写代码如下:
对应的,黄灯和绿灯的代码分别如下:
4个代码块结合在一起,好好理解一下,有了”广播消息并等待“指令,每次都需要等待等熄灭后才继续发送下一个广播消息。当第三盏灯熄灭后,小朋友提示玩家点击右下角的按钮,然后发送了一个”按顺序点击“的广播消息。
3. 点击按钮并记录顺序
接下来就是玩家点击按钮了,注意玩家点击按钮的时机,必须是在发送”按顺序点击“广播之后才有效,因此,我们要在接收这个广播消息中来处理用户的点击。
处理的方法也比较简单,如果按下鼠标并且角色碰到了鼠标指针,就说明玩家点击了该按钮,此时将该按钮对应的数字保存到“点击顺序”列表中即可,以红色按钮角色为例,编写代码如下:
简要说明两点:
1). 用户点击按钮后,这里做了一个小小的处理,就是让按钮先变大一点,0.5秒后再恢复原来大小,这样玩家就知道已经点击按钮了,提升了用户体验;
2). 每点击一个按钮,都需要判断3个按钮是否都已经点击过了,所以,这里增加了一个判断,当列表的项目数等于3时,就说明已经点击了3次,此时发送了一个“完成点击”的广播消息。
黄色按钮和绿色按钮也需要编写类似的代码,这里就不再列出了。
4. 判断对错
小朋友角色在接收到“完成点击”的广播消息后,需要对两个列表进行判断,对应的代码如下:
如果二者顺序一致,则将“正确次数”增加1,同时说“对了”,否则就说“错了”,不管是对是错,“次数”变量要增加1。
5. 重复5次并统计结果
当前只完成了一局游戏,题目要求重复5局游戏,该怎么做呢?
常规的做法就是使用重复执行指令,这个当然没有问题。超平老师今天告诉你一个巧妙的办法,那就是使用广播机制,这可以让代码结构变得更加清晰简单。
当次数增加1后,需要判断次数是否为5,如果等于5,就结束游戏,否则重新开始,我们可以发送一个“开始亮灯”的广播消息,代码如下:

总结与思考

列表的使用,重点是列表数据的随机插入和列表的比较;
事件广播机制,尤其是“广播并等待”指令的使用和理解;
使用变量作为广播消息名称的编程技巧;
外观编程,包括说话、切换造型和改变角色大小;
妙用广播实现循环的编程技巧;
点击角色的另类实现。

添加 家长论坛微信
全部 0条评论