KevinHu 发表于 2020-5-17 16:08:46

简单植物大战僵尸制作(2)

本帖最后由 KevinHu 于 2020-5-22 17:45 编辑

简单植物大战僵尸制作(2)——放置植物

在上一篇中,我们制作了背景和声音,这一期,我们来制作放置植物这一个部分的内容

这节课的素材包:
**** Hidden Message *****



设置大小

首先,先把资源包里的每个植物都导入到 scratch 里。



因为寒冰射手有点大,所以我们把它的大小设置成 25。



开始撸代码{:10_265:}

基本

开始时,先把每个植物都隐藏起来。

在每个植物的代码区里都添加这样的代码:



植物种植

然后要实现点击植物的卡片,相应的植物就会跟着鼠标走,直到玩家点击鼠标种植。

这里拿豌豆射手举例,其它植物以此类推。

当豌豆射手卡片被点击时,可以广播“种植豌豆射手”,当豌豆射手接收到广播时,就显示,并且一直跟着玩家的鼠标走,直到玩家点击鼠标。

在豌豆射手卡片里添加如下的代码:



在豌豆射手里添加如下的代码:



可是,在我们运行的时候发现当我们点击鼠标时,豌豆射手只会显示,而不会跟着我们的鼠标走{:10_269:}



这是因为,当我们点击鼠标时,豌豆射手收到了“种植豌豆射手”的广播,因为电脑的速度非常快,所以当豌豆射手检测我们的鼠标是否按下时,我们的鼠标依然是按下的,所以豌豆射手并没有跟着我们的鼠标走。

为了解决这个问题,我们可以在豌豆射手卡片的代码里加上:等待按下鼠标不成立。这样当我们的鼠标抬起来的时候豌豆射手才会显示并且跟着鼠标走。



可是,这样的话我们又发现了一个 bug:每一个植物只能种植一个,种下一个植物后再点击植物卡片时原来的植物就又跑到玩家的鼠标那里去了{:10_245:}



要解决这个问题,我们需要用到“克隆”这个积木



当玩家按下鼠标时,豌豆射手可以克隆自己,并且把本体隐藏,克隆体就留在屏幕上了{:10_256:}

修改豌豆射手的代码为如下:



可是,为什么还是不行{:10_266:}



这是因为,上面的代码中“当接收到‘种植豌豆射手’”是针对每一个豌豆射手的(也就是本体和所有克隆体),所以当玩家点击豌豆射手卡片时,豌豆射手的本体和克隆体都会执行这段代码,也就是克隆体就不会留在原来的位置上了。

要解决这个问题,我们要了解一种新的知识:私有变量。

给豌豆射手设置私有变量,相当于本体和所有克隆体的私有变量都可以不相同。也就是说私有变量是每个对象的一个“标签”

建立私有变量的方法是:选中变量针对的角色,点击变量 ==> 新建一个变量 ==> 输入变量名(因为我们设置私有变量的目的是判断是否为克隆体,如果是克隆体就不执行代码,所以名字就定为“是克隆体吗?”)(注意这里一定要选:“仅适用于当前角色”)



然后,把这个私有变量隐藏掉(影响美观){:10_256:}

现在,我们把豌豆射手的代码设置成这样:



再运行看一看,是不是可以实现了{:10_298:}

来解释一下这段代码:当绿旗被点击时,把变量“是克隆体吗?”设置为不是,因为当时还没有克隆体,只有本体,而本体当然不是克隆体,所以把这个变脸设置为不是。当接收到“种植豌豆射手”的时候,进行一个判断:如果“是克隆体吗?”这个变量为:“不是”,也就是本体的时候,才会执行以下的代码。再克隆自己之前,先把“是克隆体吗?”设置成“是”,然后克隆自己时,克隆体会继承本体的所有属性,于是克隆体里的变量“是克隆体吗?”就是“是”了,而因为这个变量是私有变量,所以克隆体的变量的值不会随着本体的改变而改变;当克隆完了之后,就再把这个变量设置成“不是”,那么本体的“是克隆体吗?”就又变回“不是”了,而克隆体的这个变量还为“是”,这样就能解决这个问题了。

最后,再把这段代码复制到别的植物里,就完成了种植的工作。(注意:一定要重新建立私有变量和重新拟一个广播名,要不然变量会显示没有建立,而广播会和豌豆射手冲突)

效果图:



虽然还是有一些不足(如:不能控制正好种在格子里),但是这些我们以后再解决{:10_256:}



这期的教程先到这里

如果喜欢,别忘了评分+订阅哦~{:10_281:} 订阅传送门





下一篇:传送门

乘号 发表于 2020-5-17 16:12:25

Python他不香吗?

wuqramy 发表于 2020-5-17 16:13:25

好玩

weiter 发表于 2020-5-17 16:13:31

666

永恒的蓝色梦想 发表于 2020-5-17 16:14:01

6P6P

永恒的蓝色梦想 发表于 2020-5-17 16:14:42

我点进来的时候还是0回复,看完了文章,二楼没了{:10_266:}

KevinHu 发表于 2020-5-17 16:16:33

本帖最后由 KevinHu 于 2020-5-17 16:17 编辑

乘号 发表于 2020-5-17 16:12
Python他不香吗?

不会{:10_269:},我现在还没怎么深入学python{:10_256:}

KevinHu 发表于 2020-5-17 16:18:22

哇塞,这次竟然没有审核{:10_298:}

乘号 发表于 2020-5-17 16:19:42

本帖最后由 乘号 于 2020-5-17 16:24 编辑

KevinHu 发表于 2020-5-17 16:16


帮我弄个scratch安装包谢谢(鱼币回复)

乘号 发表于 2020-5-17 16:21:35

本帖最后由 乘号 于 2020-5-17 16:26 编辑

KevinHu 发表于 2020-5-17 16:16
不会,我现在还没怎么深入学python

2鱼币2荣誉如何?

KevinHu 发表于 2020-5-17 16:24:19

乘号 发表于 2020-5-17 16:19
帮我弄个scratch安装包谢谢(鱼币回复)

https://fishc.com.cn/forum.php?mod=viewthread&tid=119574&highlight=scratch

糖逗 发表于 2020-5-17 17:48:12

欧莫西蝼蚁(有意思){:10_254:}

不二如是 发表于 2020-5-18 08:09:48

建议按照:申精#文章格式建议【官方指导】要求排版,然后 @在下,申请精华哦{:10_307:}


KevinHu 发表于 2020-5-18 08:13:53

不二如是 发表于 2020-5-18 08:09
建议按照:申精#文章格式建议【官方指导】要求排版,然后 @在下,申请精华哦

可以申精吗{:9_240:}

我先去上课,上完课再排一下版{:10_266:}

MIke_python小小 发表于 2020-5-18 08:17:56

我想问这个scratch那么幼稚你们为什么还玩呀

都会python了还玩scratch{:10_266:}

KevinHu 发表于 2020-5-18 08:18:38

MIke_python小小 发表于 2020-5-18 08:17
我想问这个scratch那么幼稚你们为什么还玩呀

都会python了还玩scratch

scratch简单{:10_256:}

MIke_python小小 发表于 2020-5-18 08:25:16

KevinHu 发表于 2020-5-18 08:18
scratch简单

简单但是美没有意义呀

这不等浪费时间吗{:10_266:}

KevinHu 发表于 2020-5-18 08:27:27

MIke_python小小 发表于 2020-5-18 08:25
简单但是美没有意义呀

这不等浪费时间吗

锻炼编程思维{:10_256:}

不二如是 发表于 2020-5-18 08:34:42

KevinHu 发表于 2020-5-18 08:13
可以申精吗

我先去上课,上完课再排一下版

好的,感觉可以哦

yu55800 发表于 2020-5-18 10:52:27

{:10_256:}{:10_256:}
页: [1] 2 3 4 5 6
查看完整版本: 简单植物大战僵尸制作(2)