作品介绍
今天为大家分享的Scratch作品是《对对碰》,这是第11届蓝桥杯省赛真题,原定于2020年3月7日举行的省赛,因疫情延期到2020年6月21日,这是中级组编程部分的第6题,也是最后一题,题目要求考生编程创作一个简单的对对碰游戏,两两相同的一共四张扣下的纸牌,每次先后翻开两张。如果两张一样就消失,如果两张不一样就重新扣下。当舞台上所有纸牌都消失,就过关了。
先来看看题目的要求吧:
编程实现:
对对碰
两两相同的一共四张扣下的纸牌,每次先后翻开两张。如果两张一样就消失,如果两张不一样就重新扣下。当舞台上所有纸牌都消失,就过关了。




具体要求:
1). 创建四个纸牌角色,每张纸牌包含两个造型(正面和背面),其中两张牌面为小猫,另外两张牌面为小狗,牌的背面图案都一样;
2). 当绿旗被点击,四张纸牌以牌面朝下的状态,以随机顺序出现在如图所示的四个位置(不能重叠),参考坐标:(-100,100),、(50,100)、(-100,-50)、(50,-50);
3). 任意选择一张纸牌,点击可以翻开这张纸牌, 每当翻开两张纸牌时就要判断这两张纸牌是否一样。如果一样,则这两张纸牌消失掉。如果不一样,则两张纸牌重新扣回,等待下一次翻牌;
4). 当舞台上的四张牌全部消除,则游戏成功。小猫角色出现在舞台中心位置,说出从开始出现纸牌到纸牌全部消除所用的游戏时间,持续2秒。并且将本次游戏时间加入列表“成绩单”的最后一项,此时列表“成绩单”还要显示在舞台上;

5). 紧接着,小猫询问“是否排序?”,如果输入“是”,那么就以从小到大的顺序,将列表中的数据进行排序,程序结束;

6). 再次点击绿旗,还可以进行下一轮游戏。注意:成绩单的数据要保留不要删除。

作品效果
Scratch对对碰作品的效果如视频所示:
作品解读
Scratch对对碰作品一共使用了5个角色,如图所示:

本题还是挺有难度的,我们需要解决以下几个问题:
- 如何实现洗牌
- 如何如何点击的是第一张牌还是第二张牌
- 如何判断是否两张牌匹配成功
为了实现随机洗牌效果,我们可以使用一个列表,用来保存四张纸牌的位置,每次点击绿旗时,将1、2、3、4四个数随机插入到列表中,这部分的代码如下所示:

然后,四个纸牌角色在接收到广播消息后,就按照列表中的数字移到相应的位置,以纸牌1角色为例,其代码如下:

另外两个问题都需要借助变量来实现,我们可以定义两个变量,一个是“第几张牌”和“已翻开牌面”,其中第几张牌用来表示当前翻开的是第几张牌,如果是第一张牌,则翻开即可,并使用变量“已翻开牌面”记录下翻开的牌。如果当前是第2张牌,则需要比较,翻开的两张牌是否相同,如果相同,则消除,否则都翻回去。
暂无评论内容