最新消息:

植物大战僵尸02、坐标初始化和克隆中的bug

Scratch 少儿编程 2727浏览 0评论
scratch少儿编程第三季01

友情提示:视频教程观看时请手动设置清晰度。

各位小伙伴大家好:

上期我们一起学习了,如何划地盘设置背景并让两位主角登场。今天我们来继续完善,让僵尸们多一点再多一点。

 

比如当我们按下某个键的时候就出现一只僵尸,让我们的程序离一个真正的植物大战僵尸游戏更近了一点。

 

首先来看一下我们僵尸角色的代码

 

scratch少儿编程第三季——植物大战僵尸02、坐标初始化和克隆中的bug

 

代码还是分成两部分,右边是一个键盘监测当我们按下空格键的时候就克隆一只僵尸,左边我们在上期的基础上增加了一个坐标

 

僵尸出现位置的x坐标是不变的,都是在最右边180的位置。有所不同的是它的y坐标(也就是上下位置会改变)。为了设置僵尸出现的位置,我们将建立了一个列表用于存放y坐标的值。

 

scratch少儿编程第三季——植物大战僵尸02、坐标初始化和克隆中的bug

 

列表名字我们叫做loca,所以左边第二行代码在设置坐标的时候会从列表中随机提取一个y坐标的值,这样我们就实现了僵尸在5个坐标位置的随机出现。

 

代码到位了我们一起来看看效果:

 

看看这场面是不是很,很震撼,很出人意料,很莫名其妙,很想骂人。人家豌豆千辛万苦来单挑,你这僵尸一上来就是一个连。怎么说都有点不讲江湖规矩,违背公平正义的原则。

 

但僵尸也很委屈:我倒是想一个一个上关键是你个low程序不让呀,瞧你这写的什么好bug。

 

那么造成这么个欢乐局面的原因是什么呢?

就是一句代码<克隆自己>

 

当我们按下空格键的时候,只僵尸变成了只,程序到这完全没问题一切很正常。但是当画面有两只僵尸的时候,此时我们再按下空格键,这样画面中的两只僵尸克隆自己。

 

2*2=4这是每个爹都教过的道理,然后你继续欢乐的……………………个空格,接下画风突变2、4、8、16、32、64、128、256…………说好的植物大战僵尸,现在变成僵尸数学家的大聚会。

 

关于这个bug网上也有一些讨论和相关资料,这里我们给出自己的解决方案和大家一起分享。

 

首先我们建个变量用于统计僵尸的数量。

 

scratch少儿编程第三季——植物大战僵尸02、坐标初始化和克隆中的bug

 

然后我们将代码做适量的修改。

 

scratch少儿编程第三季——植物大战僵尸02、坐标初始化和克隆中的bug

 

游戏开始,先把变量设为0如右边的代码。然后每次克隆一只僵尸就将变量加一,每次删除一只僵尸就将变量减一。

 

那么克隆僵尸的代码去哪了呢?

 

scratch少儿编程第三季——植物大战僵尸02、坐标初始化和克隆中的bug

 

我们把这行代码写到背景的脚本区,背景反正闲着也是闲着,用来喊喊口令正好。

 

因为克隆的代码写到了背景里面,所以我们当我们继续按空格键的时候,就不是僵尸在克隆自己了,也就不会出现那种重复克隆的bug了。

 

最后我们来看看修改后的效果:

如果对于Scratch中的克隆bug,你有更好的解决方案,欢迎和我交流。

scratch少儿编程第三季——植物大战僵尸02、坐标初始化和克隆中的bug

转自公众号:
高维数学

您必须 登录 才能发表评论!