友情提示:380元/半年,儿童学编程,就上码丁实验室。
爱吃蘑菇的水管工、以1敌20的方形坦克、只长了一张嘴只知道吃吃吃的圆形怪物…这些经典的游戏形象都深刻的烙印在了我们童年的美好回忆中,(又暴露了年龄~)
今天我们要再现一个只知道吃吃吃,且有着严重强迫症的经典游戏形象——贪吃蛇。
贪吃蛇这个游戏不需要我多做介绍,几乎没有人没有玩过,从最早的文曲星(又暴露年龄,汗~),到只要带个屏幕的功能手机,再到现在的智能手机,可以说是只要带个屏幕的电子设备上都能找到贪吃蛇这类游戏。
游戏方式非常简单(最基本的贪吃蛇):
玩家控制一条贪吃蛇,不断的在屏幕中运动,蛇身的运动完全跟随蛇头;屏幕中不断出现食物,玩家控制贪吃蛇吃掉食物,得分加一,贪吃蛇本身长度加一,吃得越多,蛇身越长,游戏难度越高,当蛇头撞到边缘或吃到自己则游戏结束。
这次我们用Scratch实现这样一个经典的游戏。
点击链接试玩:好好搭搭版贪吃蛇
(需PC端打开)
游戏制作步骤:
1.登入好好搭搭网站,打开“创作模板——Scratch”
2. 删除小猫角色。可怜的小猫又被删除了
3. 新建角色——贪吃蛇头部
这里我们用小球组成贪吃蛇头部,下文中简称“头部”。
4. 编写头部脚本1——改变头部的造型和大小
贪吃蛇的头部和身体将使用不同的角色,为了区分,将头部改成绿色小球,身体用黄色小球。
将头部大小设定为略小于20×20。
所以头部的脚本为:
5. 编写头部脚本2——初始位置
玩过贪吃蛇游戏的人都知道,基本的贪吃蛇游戏,每次运动都是向一个方向移动固定的距离,这里每次移动距离为20步。
将整个舞台完整的拆分为20×20的格子,头部应该完整的位于其中一个格子之内。
又因为头部的造型中心在小球中心:
所以,上图中小球的坐标为(10,10),小球脚本变为:
6. 编写头部脚本3——头部的运动
当游戏开始时,可以默认一个运动方向——右,即面向90°方向。
每次移动步数为20步。此时脚本为:
加入方向键控制运动方向的脚本
头部的脚本告一段落。
7. 新建角色——食物“apple”
8. 编写食物脚本1——改变大小
食物的大小应与头部的大小一样,略小于20×20
9. 编写食物脚本2——初始位置
食物出现的位置为随机,同时又应处于舞台拆分出的任意一个20×20的方格内,所以食物的初始位置脚本为:
10. 编写食物脚本3——再次出现位置
食物被贪吃蛇吃掉之后,得分加一,之后会再次出现在另一个随机位置。所以食物脚本变为:
11. 新建角色——贪吃蛇身体
因为贪吃蛇头部撞到自己的身体,游戏结束。但是Scratch中无法实现角色是否碰到自己克隆体的判断,所以用另外一个角色作为贪吃蛇身体,这样便可以用头部角色是否碰到蛇身角色来判断游戏是否应该结束。
下文中简称“贪吃蛇身体”为“身体”
身体的大小应与头部一样,所以身体的初始脚本为:
12. 编写头部脚本4——头部坐标变量
身体要跟随头部运动,则头部的坐标信息需要传递给身体。所以需要新建两个变量:“头部的X坐标”和“头部的Y坐标”。
13. 编写身体脚本1——跟随头部
身体的坐标设为与头部一致。
到这里,大家可能会有一个疑问,从程序上看,身体应该和头部重叠才对,为什么会跟在头部后面呢?
我们再看下头部的脚本:
保存头部坐标值在前,移动20步在后,所以身体得到的坐标值为头部移动20步之前的。
14. 编写身体脚本2——得分后变长
身体的变长可以用克隆体实现:
身体的脚本为:
以上脚本实现得分后变长的原理为:
以此类推,克隆体被删除的时间间隔越长,则身体的长度越长。将这个时间间隔与得分相关,即可实现得分越高,身体越长。
15. 编写头部脚本5——碰到身体和边缘,游戏结束
这是贪吃蛇游戏的一个基本设定。脚本很简单,增加“碰到…”判断。
16. 编写头部脚本6——反向运动禁止
玩过贪吃蛇游戏的玩家都知道,头部的运动方向是不能直接反向的,即当头部运动方向右时,不能直接改为向左运动,只能向上或向下运动。
大家没见过这样的贪吃蛇游戏吧
需实现:
所以需要判断此时身体角色在头部角色的哪个方向上,即头部不能向身体所在方向运动。
为了要知道身体角色相对于头部角色所在方位,需要新建两个变量:“身体的X坐标”和“身体的Y坐标”
先修改“身体角色”的脚本:
再修改“头部角色”的脚本:
即可实现反向运动禁止的功能,至此,贪吃蛇游戏的基本框架和脚本编写完毕。
贪吃蛇游戏,如今已经发展出了更多的玩法,大家可以进行各种尝试,如一次出现多个食物、不同事物得分不同、加入障碍物、剪断自己的身体等等,这些有意思的扩展会在后续的文章中推出。如果大家能想到更多更有趣的玩法,欢迎留言!也欢迎游戏同好投稿!