翻卡记忆游戏
这篇文章会介绍,如何在 Scratch 里使用变数、清单、多个角色、重复、广播消息和造型...等积木,实作一个翻翻卡的卡牌记忆小游戏。
改良版新范例参考:翻翻卡、卡牌记忆 ( 2024 改良版 ),新范例改用分身的做法,让程序更清楚好懂。
角色设定
在角色编辑区,删除猫咪角色,使用绘画,绘制新角色 ( 参考:造型与绘图 )。
将新角色的第一个造型,绘制一个黄色的方形 ( 颜色可自行定义 ),作为卡牌的封面 ( cover ),接着新增三个造型,作为翻牌配对的图案。
小技巧:如果担心图形位置不准确,可以先复制第一个造型,再复制新增的图案,贴上到复制的造型上即可。
虽然有六张卡牌,但因为卡牌的程序都相同,所以先放置一张卡牌,所有程序都完成后,再复制出其他五张卡牌。
积木程序原理 ( 舞台 )
点击“舞台”,将一开始的程序写在“舞台”里。
新增三个变数 ( 几张卡、n 和 ok ) 和一个清单 ( 卡牌顺序 )。
设定点击绿旗的程序:
- 因为有六张卡,所以将变数“几张卡”设定为 6 ( 方便未来增加卡片数量时可以调整 )。
- 因为卡片图案从角色的“第二个”造型开始,所以将变数 n 设定为 2。
- 删除清单“卡牌顺序”的所有项目。
- 使用“重复几次”积木,重复“几张卡”的次数。
- 每次重复将“无条件舍去的 n”数值添加到“卡牌顺序”。
- 每次重复将 n 增加 0.5。
因为卡牌的图案两两相同,所以每次将 n 添加 0.5,再使用无条件舍去,就能做到两两相同的效果,例如 [2, 2.5, 3, 3.5, 4, 4.5] 就会变成 [2, 2, 3, 3, 4, 4]。
接着设计“打乱卡排顺序”以及“开始游戏”的程序:
- 使用“重复几次”积木,重复“几张卡 x 4”次。
- 每次重复将“卡牌顺序”的“第一个项目”,插入到后方任何一项里 ( 2~卡牌数量+1 )。
- 每次重复移除“卡牌顺序”的“第一个项目”( 这个做法可以打乱卡排顺序 )。
- 打乱卡排顺序后,设定变数 ok 为 0 ( ok 变数为判断图案是否相同的变数 )。
- 广播消息“开始”。
这里使用打乱顺序的方式,是将第一个项目取出,例如 [2, 2, 3, 3, 4, 4] 就会变成 [2, 3, 3, 4, 4],再将第一个项目插入到后方随机的位置,就可能会变成 [2, 3, 3, 2, 4, 4],当重复的次数够多,清单顺序就会完全被打乱。
积木程序原理 ( 卡牌 )
点击卡牌角色,编辑“翻牌比对”的程序,首先当点击绿旗时,显卡牌 ( 因为游戏结束会隐藏卡牌,所以开始时要重新显示 ),并将卡牌造型设定为封面 cover。
接着建立一个“仅适用当前角色”的变数,命名为“个别内容”。
“仅适用当前角色”的变数在改变数值时,不会影响到别的角色。
设定收到“开始”消息时,将“个别内容”变数设定为“卡牌顺序”的第一个项目,接着移除卡排顺序的第一个项目 ( 如此就能保证不会和别张卡牌重复 )。
设定“当角色被点击”的程序:
- 如果“造型编号”等于 1,表示卡牌还没有翻开,可以执行翻牌程序。
- 将造型编号换成“个别内容”的数值。
- 判断如果变数 ok 等于 0,表示舞台放没有卡牌被翻开。
- 将变数 ok 设定为“个别内容”的数值。
- 如果变数 ok 不等于 0,表示舞台已经有卡牌被翻开。
- 判断如果变数 ok 等于“个别内容”,表示图案相同,发送“相同”的消息。
- 判断如果变数 ok 不等于“个别内容”,表示图案不相同,就将 ok 设定为 0,发送“不同”的消息。
设定收到“相同”消息时的程序:
- 判断变数 ok 是否等于“个别内容”。
- 如果等于“个别内容”,等待一秒后,隐藏卡牌。
- 接着将变数 ok 设定为 0。
为什么要再次判断变数 ok 是否等于“个别内容”?因为发送“相同”消息时,舞台上所有的卡牌都会收到同样的消息,所以必须要再次进行判断,确认相同后,再将变数 ok 设定为 0。
接着设定收到“不同”消息时,等待一秒后将卡牌造型变成封面 cover。
最后,复制卡牌角色,并将复制出的卡牌,在舞台上排列整齐。
完成效果
完成后,点击绿旗,就可以开始进行翻翻卡 ( 卡牌记忆 ) 的游戏。
范例解答
范例解答:翻翻卡 ( 卡牌记忆 )
延伸练习
如果已经熟悉了翻翻卡 ( 卡牌记忆 )的原理,还可以尝试更多好玩的作法:
- 沿用范例程序,将卡片变成 10 张。( 解答 )
微信扫码关注
抖音扫码关注