上一篇文章我们实现了飞机大战基础版里,自己飞机的移动,子弹的发射,以及游戏结束的判定这几部分的程序。
今天来完成scratch敌机的程序。
敌机需要从屏幕上方不断往下落,同时被子弹击中的话就增加我们的得分。
首先我们要建立一个变量,来控制得分,名字就叫做“得分”就可以了。
要注意每次开始游戏得分是要归零的,所以点击小绿旗以后就要将得分设为0。
同时,我们多架飞机下落,还是和子弹一样,是用克隆来实现的,需要把本体隐藏起来。
然后我们需要不断的克隆敌机,但是要注意每次克隆要有一个间隔时间,等待一定的时间再进行克隆,这样不至于一下子出现太多的敌机,反应不过来。
等待时间可以自己进行调整,数值越大,飞机出现间隔就越长。
要注意最好先等待再克隆,因为程序一开始就出现敌机的话稍微有点快,等待一会再出现飞机效果更好一点。
当飞机克隆出来以后,要来到一个随机的位置,但是都是在屏幕的上方,高度还是一样的,所以y坐标不变,我们把x坐标设为随机数。
屏幕的x坐标范围是-240~240,因为我们的战机本身就有一定的大小,为了让我们的战机完全显示出来,不至于一部分在屏幕内,一部分在屏幕外。
我们需要把x坐标的随机范围调的小一点,我用的是-200~200。
这个可以根据战机大小进行调整。战机越大,他x的范围就要越小。
和之前的子弹一样,因为本体是隐藏的,所以需要让克隆体显示出来。
我们的敌机在碰到舞台底部之前,是一直下落的,所以,要重复执行下落,直到碰到舞台边缘,下落是高度发生了改变,所以要修改y坐标,而且越往下y越小,所以我们要让y不断减少。
那碰到舞台边缘以后,就执行删除克隆体的任务。
敌机除了落到底会消失,碰到子弹也会消失,所以当作为克隆体启动的时候,还要不断的进行一个判断,判断碰没碰到子弹。
如果碰到了子弹,那就将得分增加1,并且删除掉克隆体。
注意,因为我们之前子弹碰到敌机的时候,为了显示效果,等待了0.2秒,这里我们的敌机也要等待0.2秒以后再进行加分和删除克隆体。
注意,子弹和敌机碰到一起以后,等待的0.2秒,不光是为了显示效果,如果不等待一小会儿的话,有可能会出现一种情况,那就是敌机消失了,但子弹依旧在前进。
我们等待0.2秒也是为了增加判断时间,因为我们对于子弹碰到敌机用了两次判断,如果敌机碰到子弹立刻消失,那么子弹可能会在执行增加y坐标(上升)的程序,没有判断到碰到了敌机,所以就会出现子弹不消失的情况。
这也是我们加等待的另一个原因。
还有一种方法可以解决这个问题,那就是在敌机碰到子弹之后广播一个消息,让子弹接收到这个消息以后删除克隆体,感兴趣的可以自己试一下。
用等待或者是广播消息都可以实现子弹和敌机同时隐藏的效果。
我们的飞机大战基础版程序到这就结束了。
以下是敌机的完整程序: