本项目难度较高,适合熟练使用Scratch的同学,用到的知识点:变量、私有变量、克隆、列表、自定义积木、广播、循环、判断等,(本题也是第16届蓝桥杯青少组Scratch省赛中级组编程题:消消乐)
具体要求:
(1)点击绿旗,舞台上的每个方块中都出现 1 个随机魔法道具,且这16个魔法道具整齐地排列成4行4列;
(2)点击其中任意一个魔法道具,被点击的魔法道具会被黑色选框选中;
(3)当有两个魔法道具被黑色选框选中时,再点击其他魔法道具无任何效果;
(4)当有两个魔法道具被黑色选框选中时,如果这两个魔法道具不相同,那么黑色选框会在0.2 秒后变成红色选框,然后再过 0.2 秒,红色选框消失;
(5)当有两个魔法道具被黑色选框选中时,如果这两个魇法道具相同,那么黑色选框会在 0.2秒后变成蓝色选框,然后再过 0.2 秒,蓝色选框与其中的魔法道具一同消失,如图所示:
(6)重复执行“具体要求”(2)~(5)当舞台上的魔法道具全不相同或者魔法道具全部消失时游戏结束,显示胜利,如图所示。
素材下载:通过网盘分享的文件:魔法道具素材.zip
分析:
本题目可以拆分为以下几个模块
1、生成4 行 4 列的道具(使用克隆,每个克隆体有唯一的编号即1-16,每个克隆体的造型对应列表中的造型编号)
2、角色点击,判断造型是否相同,相同消失(需要记录是第几次点击,如果是第一次点击,显示黑色方框,将方框移动到角色位置;第二次点击,判断造型是否相同,根据结果显示不同颜色方框,并判断角色是否需要消失,如果角色消失,那么将列表中消失角色的造型置为0,当第二次点击结束,验证游戏是否结束,否则将点击次数重置为0)
3、判断结果,又分为两种情况:
a、舞台上的魔法道具全不相同,即列表中所有大于0的数都不相同,判断办法,遍历列表,把大于0的数放入新的列表,每次放入前先判断新列表中是否有相同的,如果有那说明还有相同的魔法道具。
b、魔法道具全部消失,即列表中所有元素都是0,上述判断同样适用,也就意味着大于零的数没有,即不存在相同的魔法道具了。
本程序需要记录的信息通过变量来存储:
16个魔法道具使用不同的造型表示不同的道具,将造型编号存入列表(列表:魔法道具)。
16个魔法道具各自有一个唯一编号(私有变量:id)
两次点击的坐标,用来控制方框显示的为止(变量:首次点击x、首次点击y、二次点击x、二次点击y)
两次点击的角色造型,用来比较是不是相同的魔法道具(变量:首次点击造型、二次点击造型)
两次点击的角色编号(id),用来控制角色消失(变量:首次点击id、二次点击id)
点击的次数,用来记录是第一次点击还是第二次点击(变量:点击次数)
检查舞台剩余道具,将剩余道具造型编号放入新的列表,判断是否还有相同的。(列表:剩余道具)
用于遍历列表的自变量(变量:i)
实现步骤:
第一步:上传角色和背景(魔法道具素材.zip),或者自己使用其它素材替代
第二步:根据分析,创建所需列表和变量,注意变量id一定需要勾选仅限当前角色(私有)

第三步:切换到魔法道具角色,编写程序生成4行4列整齐排列的魔法道具。
先生成16个随机数,依次添加进“魔法道具”列表,每个随机数就是对应16个道具的造型编号(魔法道具总共有6个造型)
然后通过克隆生成4行4列矩阵,当克隆体启动时切换到列表对应的造型。
第四步:鼠标点击角色显示黑色方框(使用变量记录是第一次还是第二次点击),每次点击都要记录点击角色的造型、id、坐标(记录造型用来判断道具是否相同,记录id方便删除克隆体,记录坐标用来显示方框),每次点击还要给变量点击次数加1。
第五步:在第二次点击结束,需要判断道具是否相同、是否删除克隆体,最后把点击次数置为0,判断游戏是否结束。
第六步:切换到方框角色(有三个造型:黑、红、蓝),处理消息。在上一步中使用了广播用来显示黑框、方框变色、以及删除红框。具体对应的消息处理如下:
这是显示黑框,当接收到消息,克隆,根据点击次数,判断是第一次还是第二次,移动到对应坐标,切换为黑色造型。
如果要改变颜色,切换造型即可,当要让方框消失,删除克隆体即可。
第七步:删除克隆体,如果两次点击的角色造型一样,删除方框的同时还要删除点击的两个克隆体。点击的两个克隆体我们已经记录下来了他们的id,所以克隆体收到消息只需要判断id如果是点击过的就删除,同时列表对应的造型置为0。
第八步:判断游戏结束,遍历魔法道具列表,把大于0的数放入新的列表(剩余道具),每次放入前先判断剩余道具列表中是否有相同的,如果有那说明还有相同的魔法道具,停止即可。如果魔法道具列表中所有大于0的数都成功加入到了剩余道具列表,表明没有相同的,即游戏结束,广播消息win。
第九步:切换到角色“win”,接收到广播,显示角色,游戏结束。
源码下载:Scratch少儿编程游戏制作-魔法道具消消乐v1.1.sb3
本站内容未经许可,禁止任何网站及个人进行转载。







