友情提示:视频教程观看时请手动设置清晰度。
各位小伙伴大家好:
上期我们一起学习了,如何划地盘设置背景并让两位主角登场。今天我们来继续完善,让僵尸们多一点再多一点。
比如当我们按下某个键的时候就出现一只僵尸,让我们的程序离一个真正的植物大战僵尸游戏更近了一点。
首先来看一下我们僵尸角色的代码:
代码还是分成两部分,右边是一个键盘监测当我们按下空格键的时候就克隆一只僵尸,左边我们在上期的基础上增加了一个坐标。
僵尸出现位置的x坐标是不变的,都是在最右边180的位置。有所不同的是它的y坐标(也就是上下位置会改变)。为了设置僵尸出现的位置,我们将建立了一个列表用于存放y坐标的值。
列表名字我们叫做loca,所以左边第二行代码在设置坐标的时候会从列表中随机提取一个y坐标的值,这样我们就实现了僵尸在5个坐标位置的随机出现。
代码到位了我们一起来看看效果:
看看这场面是不是很爽,很震撼,很出人意料,很莫名其妙,很想骂人。人家豌豆千辛万苦来单挑,你这僵尸一上来就是一个连。怎么说都有点不讲江湖规矩,违背公平正义的原则。
但僵尸也很委屈:我倒是想一个一个上关键是你个low程序不让呀,瞧你这写的什么好bug。
那么造成这么个欢乐局面的原因是什么呢?
就是一句代码<克隆自己>。
当我们按下空格键的时候,一只僵尸变成了两只,程序到这完全没问题一切很正常。但是当画面有两只僵尸的时候,此时我们再按下空格键,这样画面中的两只僵尸都克隆自己。
2*2=4这是每个爹都教过的道理,然后你继续欢乐的按按……按………按按………按个空格,接下画风突变2、4、8、16、32、64、128、256…………说好的植物大战僵尸,现在变成僵尸数学家的大聚会。
关于这个bug网上也有一些讨论和相关资料,这里我们给出自己的解决方案和大家一起分享。
首先我们建个变量用于统计僵尸的数量。
然后我们将代码做适量的修改。
游戏开始,先把变量设为0如右边的代码。然后每次克隆一只僵尸就将变量加一,每次删除一只僵尸就将变量减一。
那么克隆僵尸的代码去哪了呢?
我们把这行代码写到背景的脚本区,背景反正闲着也是闲着,用来喊喊口令正好。
因为克隆的代码写到了背景里面,所以我们当我们继续按空格键的时候,就不是僵尸在克隆自己了,也就不会出现那种重复克隆的bug了。
最后我们来看看修改后的效果:
如果对于Scratch中的克隆bug,你有更好的解决方案,欢迎和我交流。
转自公众号:
高维数学