九宫格拼图
这篇文章会介绍,如何在 Scratch 里使用变数、清单、多个角色、重复、滑行、广播消息和数学计算...等积木,实作一个九宫挌拼图的小游戏。
这个范例可能有“无法过关”的小问题,新范例参考:九宫格拼图 ( 2024 改良版 ),新范例改用分身的做法,让程序更清楚好懂。
角色设定
在角色编辑区,删除猫咪角色,使用绘画,绘制新角色 ( 参考:造型与绘图 )。
使用方形工具,画出一个正方形 ( 键盘 shift 键按著画,可以画出正方形 ),将角色命名为 move。
复制 move 脚色,将名称改成 box1。
将 box1 造型里的正方形,改成白底黑框的正方形,并用文字工具在中间输入数字 1。
复制七次造型,分别将复制出的七个造型,改成 2~8 的数字。
积木程序原理 ( move 角色 )
点击 move 角色,建立“方块、空格、ax、ay、n、ox、oy”七个变数以及“过关、检查、list”三个清单,个别说明如下图所示:
设计点击绿旗的程序,一开始先让变数和清单都是初始状态:
- 将 move 角色图层移到最下层
- 变数 n 设为 1。
- 变数方块设为 0。
- 变数空格设为 9。
- 将三个清单的内容都清空。
接续上方的积木,将三个清单放入指定数值 ( 产生的清单内容如下图所示 ):
- 使用“重复次数”积木,重复 8 次 ( 因为有八张数字卡牌 )。
- 每次重复,将 n 加到“list”和“过关”。
- 每次重复,将 0 加到“检查”。
- 每次重复,将 n 的数值增加 1。
- 重复结束后,将 9 加到“过关”和“检查”。
接续上方积木,使用“重复 20 次”积木,每次重复将 list 的第一个项目,随机插入后方的位置,接着移除第一个项目,就能将 list 的内容打乱,打乱完成后,广播“ready”的消息。
因为所有角色都会收到广播的 ready 消息,当收到 ready 消息后,将 move 角色定位到九宫格的右下角,并将变数 ox 和 oy 设定为 move 角色的 x 座标与 y 座标。
接着设计收到消息“move”的程序 ( 待会数字方块移动后,会发送 move 消息 ):
- 收到 move 消息后,滑行到 ax 和 ay 的位置 ( ax 和 ay 会在点击数字方块时改变 )。
- 滑行结束后,将 ox 和 oy 设定为新的座标。
- 使用“清单替换”的积木,将“检查”清单里的空格和方块位置对调。
- 将“空格”所在的位置设为 0。
- 将“方块”的所在位置设为“空格”。
- 将 0 的所在位置设为“方块”。
- 最后判断如果“检查”等于“过关”,就说出“完成”。
积木程序原理 ( 数字方块角色 )
点击角色 box1,编辑“数字方块”角色的程序:
- 当收到 ready 消息时。
- 将造型换成 list 清单的第一个项目。
- 变更造型后,移除 list 清单的第一个项目 ( 确保和其他方块不会重复 )。
- 将第一个方块定位到九宫格的左上角。
- 将“检查”清单的第一个项目设定为造型编号。
设计当方块角色被点击的程序:
- 将 ax 和 ay 设定为点击角色的 x、y 座标。
- 使用逻辑判断,判断方块和空格是否相邻。
- 如果相邻,则水平 ( ax - ox 的绝对值 ) 和垂直 ( ay - oy 的绝对值 ) 数值加总,会小于某个数值 ( 范例为 110 )。
- 如果相邻,让变数“方块”等于造型编号。
- 广播 move 消息,表示这个方块准备移动。
- 将方块滑行到 ox、oy 的位置 ( 空格处 )。
复制七个 box1 角色,名称分别是 box2~box8。
将复制的角色,参照下图修改积木对应的数值。
最后,将空格的颜色改成全白。
完成效果
完成后,点击绿旗,就可以开始进行九宫格拼图的游戏。
范例解答
范例解答:九宫挌拼图
延伸练习
如果已经熟悉了九宫挌拼图的原理,还可以尝试更多好玩的作法:
- 沿用范例程序,增加“云端变数”,纪录最快过关的步数。( 解答 )
微信扫码关注
抖音扫码关注