scratch飞机大战2

上一篇文章我们实现了飞机大战基础版里,自己飞机的移动,子弹的发射,以及游戏结束的判定这几部分的程序。

今天来完成scratch敌机的程序。

敌机需要从屏幕上方不断往下落,同时被子弹击中的话就增加我们的得分。

首先我们要建立一个变量,来控制得分,名字就叫做“得分”就可以了。

要注意每次开始游戏得分是要归零的,所以点击小绿旗以后就要将得分设为0

同时,我们多架飞机下落,还是和子弹一样,是用克隆来实现的,需要把本体隐藏起来。

设置得分/隐藏本体

然后我们需要不断的克隆敌机,但是要注意每次克隆要有一个间隔时间,等待一定的时间再进行克隆,这样不至于一下子出现太多的敌机,反应不过来。

等待时间可以自己进行调整,数值越大,飞机出现间隔就越长。

要注意最好先等待再克隆,因为程序一开始就出现敌机的话稍微有点快,等待一会再出现飞机效果更好一点。

克隆敌机

当飞机克隆出来以后,要来到一个随机的位置,但是都是在屏幕的上方,高度还是一样的,所以y坐标不变,我们把x坐标设为随机数

屏幕的x坐标范围是-240~240,因为我们的战机本身就有一定的大小,为了让我们的战机完全显示出来,不至于一部分在屏幕内,一部分在屏幕外。

我们需要把x坐标的随机范围调的小一点,我用的是-200~200

这个可以根据战机大小进行调整。战机越大,他x的范围就要越小。

和之前的子弹一样,因为本体是隐藏的,所以需要让克隆体显示出来。

克隆体显示

我们的敌机在碰到舞台底部之前,是一直下落的,所以,要重复执行下落,直到碰到舞台边缘,下落是高度发生了改变,所以要修改y坐标,而且越往下y越小,所以我们要让y不断减少

碰到舞台边缘以后,就执行删除克隆体的任务。

克隆体下落及消失

敌机除了落到底会消失,碰到子弹也会消失,所以当作为克隆体启动的时候,还要不断的进行一个判断,判断碰没碰到子弹。

如果碰到了子弹,那就将得分增加1,并且删除掉克隆体。

注意,因为我们之前子弹碰到敌机的时候,为了显示效果,等待了0.2秒,这里我们的敌机也要等待0.2秒以后再进行加分和删除克隆体。

加分程序

注意,子弹和敌机碰到一起以后,等待的0.2秒,不光是为了显示效果,如果不等待一小会儿的话,有可能会出现一种情况,那就是敌机消失了,但子弹依旧在前进。

我们等待0.2秒也是为了增加判断时间,因为我们对于子弹碰到敌机用了两次判断,如果敌机碰到子弹立刻消失,那么子弹可能会在执行增加y坐标(上升)的程序,没有判断到碰到了敌机,所以就会出现子弹不消失的情况。

这也是我们加等待的另一个原因。

还有一种方法可以解决这个问题,那就是在敌机碰到子弹之后广播一个消息,让子弹接收到这个消息以后删除克隆体,感兴趣的可以自己试一下。

用等待或者是广播消息都可以实现子弹和敌机同时隐藏的效果。

我们的飞机大战基础版程序到这就结束了。

以下是敌机的完整程序:

敌机完整程序
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容