Day41 ( 游戏设计 ) 翻翻卡 ( 卡牌记忆 )

翻翻卡 ( 卡牌记忆 )

教学原文参考:翻翻卡 ( 卡牌记忆 )

这篇文章会介绍,如何在 Scratch 3 里使用变数、清单、多个角色、重复、广播讯息和造型...等积木,实作一个翻翻卡的卡牌记忆小游戏。

相关文章参考:变数清单重复广播讯息造型

角色设定

在角色编辑区,删除猫咪角色,使用绘画,绘制新角色 ( 参考:造型与绘图 )。

Scratch 3 教学 - 翻翻卡 ( 卡牌记忆 )

将新角色的第一个造型,绘制一个黄色的方形 ( 颜色可自行定义 ),作为卡牌的封面 ( cover ),接着新增三个造型,作为翻牌配对的图案。

小技巧:如果担心图形位置不准确,可以先复制第一个造型,再复制新增的图案,贴上到复制的造型上即可。

Scratch 3 教学 - 翻翻卡 ( 卡牌记忆 )

虽然有六张卡牌,但因为卡牌的程序都相同,所以先放置一张卡牌,所有程序都完成後,再复制出其他五张卡牌。

Scratch 3 教学 - 翻翻卡 ( 卡牌记忆 )

积木程序原理 ( 舞台 )

点击「舞台」,将一开始的程序写在「舞台」里。

Scratch 3 教学 - 翻翻卡 ( 卡牌记忆 )

新增三个变数 ( 几张卡、n 和 ok ) 和一个清单 ( 卡牌顺序 )。

Scratch 3 教学 - 翻翻卡 ( 卡牌记忆 )

设定点击绿旗的程序:

  • 因为有六张卡,所以将变数「几张卡」设定为 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]。

Scratch 3 教学 - 翻翻卡 ( 卡牌记忆 )

接着设计「打乱卡排顺序」以及「开始游戏」的程序:

  • 使用「重复几次」积木,重复「几张卡 x 4」次。
  • 每次重复将「卡牌顺序」的「第一个项目」,插入到後方任何一项里 ( 2~卡牌数量+1 )
  • 每次重复移除「卡牌顺序」的「第一个项目」( 这个做法可以打乱卡排顺序 )
  • 打乱卡排顺序後,设定变数 ok 为 0 ( ok 变数为判断图案是否相同的变数 )。
  • 广播讯息「开始」。

Scratch 3 教学 - 翻翻卡 ( 卡牌记忆 )

这里使用打乱顺序的方式,是将第一个项目取出,例如 [2, 2, 3, 3, 4, 4] 就会变成 [2, 3, 3, 4, 4],再将第一个项目插入到後方随机的位置,就可能会变成 [2, 3, 3, 2, 4, 4],当重复的次数够多,清单顺序就会完全被打乱。

Scratch 3 教学 - 翻翻卡 ( 卡牌记忆 )

积木程序原理 ( 卡牌 )

点击卡牌角色,编辑「翻牌比对」的程序,首先当点击绿旗时,显示卡牌 ( 因为游戏结束会隐藏卡牌,所以开始时要重新显示 ),并将卡牌造型设定为封面 cover

Scratch 3 教学 - 翻翻卡 ( 卡牌记忆 )

接着建立一个「仅适用当前角色」的变数,命名为「个别内容」。

「仅适用当前角色」的变数在改变数值时,不会影响到别的角色。

Scratch 3 教学 - 翻翻卡 ( 卡牌记忆 )

设定收到「开始」讯息时,将「个别内容」变数设定为「卡牌顺序」的第一个项目,接着移除卡排顺序的第一个项目 ( 如此就能保证不会和别张卡牌重复 )。

Scratch 3 教学 - 翻翻卡 ( 卡牌记忆 )

设定「当角色被点击」的程序:

  • 如果「造型编号」等於 1,表示卡牌还没有翻开,可以执行翻牌程序。
  • 将造型编号换成「个别内容」的数值。
  • 判断如果变数 ok 等於 0,表示舞台放没有卡牌被翻开
    • 将变数 ok 设定为「个别内容」的数值。
  • 如果变数 ok 不等於 0,表示舞台已经有卡牌被翻开
    • 判断如果变数 ok 等於「个别内容」,表示图案相同,发送「相同」的讯息。
    • 判断如果变数 ok 不等於「个别内容」,表示图案不相同,就将 ok 设定为 0,发送「不同」的讯息。

Scratch 3 教学 - 翻翻卡 ( 卡牌记忆 )

设定收到「相同」讯息时的程序:

  • 判断变数 ok 是否等於「个别内容」。
  • 如果等於「个别内容」,等待一秒後,隐藏卡牌。
  • 接着将变数 ok 设定为 0。

为什麽要再次判断变数 ok 是否等於「个别内容」?因为发送「相同」讯息时,舞台上所有的卡牌都会收到同样的讯息,所以必须要再次进行判断,确认相同後,再将变数 ok 设定为 0。

Scratch 3 教学 - 翻翻卡 ( 卡牌记忆 )

接着设定收到「不同」讯息时,等待一秒後将卡牌造型变成封面 cover。

Scratch 3 教学 - 翻翻卡 ( 卡牌记忆 )

最後,复制卡牌角色,并将复制出的卡牌,在舞台上排列整齐。

Scratch 3 教学 - 翻翻卡 ( 卡牌记忆 )

完成效果

完成後,点击绿旗,就可以开始进行翻翻卡 ( 卡牌记忆 ) 的游戏。

Scratch 3 教学 - 翻翻卡 ( 卡牌记忆 )

范例解答

范例解答:翻翻卡 ( 卡牌记忆 )

延伸练习

如果已经熟悉了翻翻卡 ( 卡牌记忆 )的原理,还可以尝试更多好玩的作法:

  • 沿用范例程序,将卡片变成 10 张。( 解答 )

关於我

大家好,我是 OXXO,是个即将迈入中年的斜杠青年,如果对我有点兴趣(笑,可以与我联系,一起来做点有玩又有创意的东西吧!


<<:  27 显示覆盖的牌

>>:  Day26 用PPT制作AR明信片所需要的影片

Day5 DCS 分散控制系统

基本介绍 DCS 分散控制系统(Distributed Control System):不需要有中...

Ruby解题分享--Remove Duplicates from Sorted List

哎~~心法没有,拳法太弱.... Remove Duplicates from Sorted Li...

Docker是什麽?用 Docker 建置环境有什麽优点呢?

简单来说 Docker 就是一个虚拟机,确保执行专案时的环境都一样。 毕竟影响程序执行成功或失败的变...

【Day28】this - call, apply, bind 与严谨模式

call, apply, bind 方法 当我们对函式使用 call, apply, bind 这三...