1-3 制作彩豆
制作完大地图之后我们还感觉游戏有点单调 缺少一些可以让贪吃蛇变长的东西
这个时候 就要请出我们大名鼎鼎的彩豆啦~
第一步!创建&绘制彩豆角
我们首先创建一个名为彩豆的角色
随后我们绘制一个大小为13*13的彩豆
并且绘制一个透明的碰撞层
写完之后将造型命名为 "彩豆"
第二步!初始化彩豆&编写彩豆代码
我们先来写一段初始化克隆彩豆的代码~
首先 我们创建一个自定义积木 名为"初始化彩豆克隆体" 并且勾选 "运行时屏幕不刷新" 让我们能一瞬间执行完毕~
创建完成之后让我们来编写初始化克隆体的代码~
当接收到开始游戏的时候就调用一下初始化彩豆克隆体的函数
然后在函数里面写上 定义 初始化彩豆克隆体 函数 然后就是重复执行1000次克隆自己
编写完成之后让我们来看一下
诶?我们贪吃蛇的身体呢 突然就消失不见了呢?
这个其实是因为其实我们的克隆体数量已经到达原版 300个 克隆体的上线了
因为彩豆已经占满了300个克隆体所以贪吃蛇的身体就没有剩余的克隆体余额给他继续克隆了。
这个时候,我们大名鼎鼎的费米扩展就可以排上用场了!
首先我们在gandi扩展库中找到费米扩展并且安装
然后我们在费米扩展中找到 设置克隆体上限为XXX 并且前往舞台角色将积木拖出来 并且将克隆体上限设置为1w
OK完美,随后我们将他与当绿旗被点击结合 就做到了将作品克隆体上限初始化为1w了
我们来看看效果~
可以看到我们的贪吃蛇成功的又出现了!,不过我们可以在看的更直观一些。
我们在arkos的拓展中找到“当前克隆体数量”
然后我们点击左边的小白方格勾选上,随后我们在舞台上就可以看到实时的克隆体数量显示了
啊哈!,我们现在就可以直观的看到当前克隆体数量了,可以看到我们设置克隆体上限非常成功
然后接下来我们继续编写彩豆的代码,
我们来回顾一下,编写完初始化是不是就应该来编写克隆体的脚本了,没错!
首先,我们克隆体启动之后先把造型切换成彩豆的造型 然后因为我们是叫“彩豆”嘛 那肯定是要彩色的
我们就从0到10w随机一个颜色 最后显示。
我们显示完之后肯定是要让他在地图上面随机出现,要想让东西在地图上随机出现
第三步!制作彩豆随机在地图上出现
那么肯定是要知道地图各个边缘的位置 然后根据边缘随机一个位置。
这个时候我们要怎么知道上下左右四个边缘的xy坐标是多少呢?这个时候我们可以写一个简易的脚本
这个脚本非常的简单粗暴 原理想必大家应该也能看出来
就是移动到中心点重复执行直到移动到左边的边缘,也就是碰到红色
不过这里有一点需要注意的是这个颜色必须跟你的边缘之外的颜色对应上
我这里推荐可以使用一些取色工具来提取颜色,比如说我用的是uTools里面的取色工具(非打广告)
我们就可以直接获取到颜色的16进制,随后我们可以将这个值输入到造型编辑器的颜色里面
然后我们就得到了对应的颜色数值了~
如果你没有uTools你还可以尝试使用QQ自带的截图功能获取到颜色
然后按照上面的步骤输入到造型编辑器里面转换就可以了
然后我们手动的将这个值输入到判断里面就完美了!
好 现在让我们回到主题,我们编写完这段脚本之后运行看一下效果
emmmm,我们可以发现他确实一直在朝左走然后检测 但是他走的速度实在是太慢了!
不过这个时候不用着急 我们就要请出Scratch中的一个模式了 那就是 “加速模式” !
我们将鼠标对准小绿旗 随后按住 Shift 然后点击 鼠标左键
啊哈,舞台右侧成功的出现了一个小闪电的图标 这就代表加速模式已经成功启动了。
同理如果你想关闭的话再次按照以上方法点击一次即可关闭~ (设置里面也有加速模式的开关)
然后我们再次运行这个脚本
Wow!不出意外的话你只需要等待一瞬间坐标就出来了,可以看到我们大地图左边边缘的坐标是 -2573
那么在让我们测试一下其他方向的
同理,将代码复制成四份并且修改坐标的加减,然后我们再来执行
漂亮!我们四个边缘的坐标就都获得出来了,然后我们这段代码就可以给他扬了
随后我们回到彩豆的主代码中
然后我们编写一个随机移动到以上我们得出来的范围内的随机的位置
就像这样,好!让我们再次来执行看看效果
啊?我们这是瞬间跑到什么地方来了,哦 原来是我们的加速模式忘记关了,我们关掉然后再次运行
wow!效果非常棒 彩豆均匀的分布在了地图上面
并且没有跑到地图外面去!堪称完美
OK,移动到随机位置没有问题了之后我们就可以来做彩豆被吃掉的代码了
不过在做吃彩豆之前,有点人就会问了 “诶你这个蛇怎么没做碰到地图边缘就趋势的代码啊”
诶 说到点子上了,我们趁刚知道的边缘坐标还热乎 就顺手做一个吧
第四步!制作贪吃蛇碰到边缘趋势
这个其实非常的简单~ 让我们开始作就完了!
首先我们在贪吃蛇角色中创建一个自定义积木 叫做“检测碰到舞台边缘”
接下来让我们来编写这个积木的代码~
让我们来思考一下代码应该怎么写呢,其实非常简单
只需要判断一下 xy 是否在舞台边缘完美就可以了!
那么首先我们先来制作一下 x轴 的边缘
然后我们将刚才得到的边缘值输入进去
输入到里面之后 我们就要写如果超出边缘就将贪吃蛇的位置移动回地图中间 并且将分数重置
漂亮! 写完 X轴 之后,我们 Y轴 也是同理 直接照搬就好了
编写好之后我们将这个自定义积木放到循环中~
OK,然后就是让我们来体验一下效果
好!效果非常的完美 我们碰到地图的一瞬间就回到出生点了
不过这个代码显然是还可以优化的,太长了
首先我们看 其实这几个判断完全可以节约成一个判断 那么怎么节省呢
诶,我们直接用 "或" 积木 把这些判断全部套起来变成一个判断就好了
就不会判断那么多次影响运行效率了
好了!做完碰到地图边缘这个脚本之后我们就该回归正题 制作彩豆被贪吃蛇只掉的代码了
第五步!制作贪吃蛇吃掉彩豆
首先,我们需要添加一个扩展
没错!就是多莉扩展
我们用这个扩展就可以巧妙的实现超高性能的彩豆了~
依照惯例,我们先写一个自定义积木
那么首先我们先来写个判断
判断碰到彩豆之后我们肯定是要通知一下碰到的克隆体然后叫他删除的,那么我们应该如何做到呢?
接下来看我操作
我们先创建了一个变量用于记录触碰到的彩豆ID
然后我们进行一个广播操作 去通知彩豆 你们有克隆体要删除啦!
然后我们来到彩豆角色 将接收广播积木拖出来
随后我们编写一个判断用来确定接收到的角色是否是碰到的克隆体
如果 我的ID 等于 贪吃蛇碰到的彩豆ID
那么我们就将分数增加0.1 并且 删除此克隆体
好!那么就让我们来看看效果
我们回到贪吃蛇角色中将自定义积木拖进主循环
OK 让我们看看最后我们的效果吧~
很好!!
第一课,完~
<iframe
width="100%"
height="800px"
scrolling="no"
src="https://www.ccw.site/embed?id=snake/mckuke/Lec1/03&type=comment"
title="{贪吃蛇中级教程-第一课第三节}"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowFullScreen
scrolling="0"
></iframe>