Scratch

状课网-少儿编程网课专业平台

Scratch scratch少儿编程—植物大战僵尸之坐标初始化和克隆中的bug

发布时间:2021-11-23 16:12:12 浏览 0
各位小伙伴大家好: 上期我们一起学习了,如何划地盘设置背景并让两位主角登场。

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

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

scratch少儿编程—植物大战僵尸之坐标初始化和克隆中的bug

代码还是分成两部分,右边是一个键盘监测当我们按下空格键的时候就克隆一只僵尸,左边我们在上期的基础上增加了一个坐标。   僵尸出现位置的x坐标是不变的,都是在最右边180的位置。有所不同的是它的y坐标(也就是上下位置会改变)。为了设置僵尸出现的位置,我们将建立了一个列表用于存放y坐标的值。  

scratch少儿编程—植物大战僵尸之坐标初始化和克隆中的bug

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

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

但僵尸也很委屈:我倒是想一个一个上关键是你个low程序不让呀,瞧你这写的什么好bug。 那么造成这么个欢乐局面的原因是什么呢? 就是一句代码<克隆自己>。  

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

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

关于这个bug网上也有一些讨论和相关资料,这里我们给出自己的解决方案和大家一起分享。 首先我们建个变量用于统计僵尸的数量。  

scratch少儿编程—植物大战僵尸之坐标初始化和克隆中的bug

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

scratch少儿编程—植物大战僵尸之坐标初始化和克隆中的bug

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

scratch少儿编程—植物大战僵尸之坐标初始化和克隆中的bug

我们把这行代码写到背景的脚本区,背景反正闲着也是闲着,用来喊喊口令正好。   因为克隆的代码写到了背景里面,所以我们当我们继续按空格键的时候,就不是僵尸在克隆自己了,也就不会出现那种重复克隆的bug了。

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

本期就到这里,我们下期再会。

 

文章来源:创客编程小屋

本文链接:https://www.ascratch.com/news/17504.html

上一篇:scratch少儿编程—植物大战僵尸之搭建约架之碰撞检测和克隆 下一篇:返回列表