贪吃蛇 ( 分身版 )
这篇文章会介绍,如何在 Scratch 里使用变数、清单、分身、重复、逻辑判断、广播消息、碰到角色...等积木,实作一个可以用键盘控制的贪吃蛇小游戏。
角色设定
在角色编辑区,删除猫咪角色,使用绘画,绘制“蛇”和“蛋”两个新角色 ( 参考:造型与绘图 )。
切换到“造型”页签,将红色正方形的“蛇”,对齐中心点,并将尺寸调整为 24x24。
在造型页签左侧清单的预览图,可以看见造型的真实尺寸。
使用同样的做法,将“蛋”的造型对齐中心点,尺寸调整为 24x24。
贪吃蛇游戏原理
贪吃蛇的游戏基本上属于“清单”( 数组 ) 的操作,只要明白清单的控制原理,就能轻松实现贪吃蛇的游戏
- 开始时,蛇的清单长度为 1,清单内容是蛇的位置。
- 蛇在移动时,将新的位置加入在第一个项目,并删除最后一个项目。
- 如果吃到蛋,清单长度增加 1 ( 蛇的长度增加 1 ),将蛋的位置加入在第一个项目。
- 接着就按照上方的逻辑,控制移动和吃蛋的清单内容。
积木程序原理 ( 蛇 )
点击“蛇”角色,建立“长度、得分、x、y”三个变数以及“listX 和 listY”两个清单。
- 得分:总共吃到几颗蛋 ( 勾选显示在舞台上 )。
- 长度:蛇的长度。
- x:水平移动的方向和距离。
- y:垂直移动的方向和距离。
- listX:记录蛇身体 x 座标的清单。
- listY:记录蛇身体 y 座标的清单。
设计点击绿旗的程序:
- 设定 x 和 y 变数为 0。
- 将蛇根据 x 和 y 变数定位到舞台中心点 (0, 0)。
- 使用重复无限次积木,每隔 0.1 秒执行 x 和 y 的座标改变 ( 如果 x、y 变数有变化,座标就会改变 )。
放入“当向上、向下、向右、向左键被按下”的积木,在按下对应键盘时,改变 x 和 y 的变数数值,因为角色的尺寸是 24x24,所以 x 和 y 的数值以 25 为一个单位,让排列或移动时,会有 0.5 的间隔 ( 避免误触以及画面较为好看 )。
| 键盘 | x | y |
|---|---|---|
| 向上 | 0 | 25 |
| 向下 | 0 | -25 |
| 向左 | -25 | 0 |
| 向右 | 25 | 0 |
完成后点击绿旗,就能用键盘控制红色正方形移动。
修改点击绿旗程序:
- 将得分设定为 0。
- 将 listX 和 listY 的内容清空。
- 将一开始的 xy 座标,添加到 listX 和 listY 清单里。
根据贪吃蛇游戏原理,将“插入清单的第一项”和“删除清单的最后一项”积木加入重复无限次积木里,在移动前把 xy 座标插入清单的第一项,并删除清单的最后一项。
接着设计吃到蛋的程序:
- 放入“长度”设定为 listX 或 listY 的长度。
- 放入“如果...那么”,判断如果碰到“蛋”的角色时要做的动作:
- 得分增加 1。
- 插入目前的 xy 座标到 listX 和 listY 的第一项。
- 建立自己的分身。
- 广播“吃到蛋”的消息。
设计分身产生 ( 建立蛇的身体 ) 的程序:
- 改变分身的颜色和亮度,使其和蛇的头有所区隔。
- 使用重复无限次积木,每次重复执行:
- 判断如果长度大于 1,每次重复让长度减少 1。
- 依序取出 listX 和 listY 的项目,作为分身的 xy 座标使用。
积木程序原理 ( 蛋 )
点击“蛋”角色,编辑对应的程序:
- 点击绿旗时,将蛋定位到 (100, 0),并将图层移到最上层 ( 避免被蛇盖住 )
- 当收到“吃到蛋”消息时,将 xy 座标设定为 25 倍数的随机数 ( 刚好定位在蛇移动的路径上 )
完成效果
完成后,点击绿旗,就可以开始进行贪吃蛇的游戏。
范例解答
范例解答:贪吃蛇
延伸练习
如果已经熟悉了贪吃蛇的原理,还可以尝试更多好玩的作法:
微信扫码关注
抖音扫码关注