本章我们来完成一个星球大战的小游戏,这个游戏是一个经典的飞机游戏,我们控制的角色出现在屏幕下方,我们可以控制角色左右移动或上下左右移动;敌人会从屏幕上方不断出现,我们控制的角色要是碰到了敌人就会减血或是结束游戏。下面我们就来完成这个游戏。第一步先选择一个星空背景以及一个飞船角色(这里用的是“Rocketship”),如图19-1所示。
图19-1 选择背景及角色
调整飞船的大小,本章中这个飞船角色会对应键盘按键的操作来移动,当按下键盘“←”键时,飞船会向左移动;当按下键盘“→”键时,飞船会向右移动。完成的程序如图19-2所示。
图19-2 用键盘控制飞船角色移动的程序
这样简单的飞船移动控制程序就算完成了,大家可以尝试着增加控制飞船上下移动的程序。这里我直接开始制作子弹角色的程序。选择一个圆球角色“Ball”作为子弹,在屏幕中把它调整到适合的大小。程序方面,我们希望子弹能够一直发射,所以直接用了一个“重复执行”指令模块。在“重复执行”指令模块中让子弹的y坐标不断增加,而碰到舞台边缘时,让子弹回到初始位置,完成后程序如图19-3所示。
19-3 子弹一直发射的程序
运行一下程序,看看子弹会不会一直运动,若没有问题,就需要调整子弹的初始位置,游戏中要让子弹每次都从飞船中飞出。修改后的程序如图19-4所示。
图19-4 子弹从飞船中飞出的程序
这样,子弹碰到舞台边缘之后,飞船就会再发射一颗子弹,而当我们移动飞船时,发射子弹的位置也会改变。接下来我们制作从上往下移动的敌人,这里我选择的是一个虫子角色“Ladybug2”,在屏幕中把它调整到合适的大小,如图19-5所示。
图19-5 添加虫子角色
虫子的移动和子弹的移动相似,只不过子弹是从下往上移动,而虫子是从上往下移动。可以将子弹角色的程序复制给虫子角色,然后稍作修改,修改后的程序如图19-6所示。
图19-6 虫子角色的程序
这里主要修改了两个地方,第一个地方是将“将y坐标增加10”改为“将y坐标增加-10”,因为虫子的移动方向和子弹的移动方向是相反的。第二个地方就是碰到舞台边缘后移到的位置不同,子弹碰到舞台边缘后会移动到飞船的位置,而虫子碰到舞台边缘后会移动到舞台上方,x坐标是随机的,因为屏幕的x坐标范围是-240~240,除去虫子角色的宽度,虫子角色的x坐标范围就是-200 ~200。当虫子角色开始移动之后,就存在一个角色之间相互干涉的问题,当子弹碰到虫子时,两者都应该消除掉;而当虫子碰到飞船就应该显示“GAMEOVER”。我们先来处理子弹碰到虫子的问题,首先,在虫子角色的程序中添加虫子碰到子弹的处理程序,此时虫子也会移动到舞台上方,这一小段程序和虫子碰到舞台边缘时一样,如图19-7所示。
图19-7 添加虫子碰到子弹的处理程序
为了让子弹也消失,可以在虫子碰到子弹移动时广播消息1,程序如图19-8所示。
图19-8 修改虫子的程序
当子弹角色接收到消息1之后,会移动到飞船的位置,就像碰到舞台边缘一样。子弹角色的程序如图19-9所示。
图19-9 子弹角色的程序
最后就是虫子碰到飞船则结束游戏,为此我们新建一个角色。这个角色的内容是“GAMEOVER”这8个字母,编辑界面如图19-10所示。
图19-10 新建“GAMEOVER”角色
修改虫子角色的程序,当虫子碰到飞船时,广播消息“GAMEOVER”。修改后内容如图19-11所示。
图19-11 修改后虫子的程序
我们新建的“GAMEOVER”角色的功能是在收到“GAMEOVER”消息后,将这8个字母显示出来,同时停止运行所有程序。这个“GAMEOVER”角色在初始状态下应该是隐藏的,程序如图19-12所示。
图19-12 “GAMEOVER”角色的程序
这样,整个星球大战的程序就完成了,不过这里只是完成了基本的功能,大家可以根据自己的喜好再多添加几个敌人,这些敌人可以是同一个类型的,也可以是不同类型的。另外,我们还可以增加一个变量“score”,用来保存我们消灭敌人的数量。变量添加完成后,对变量的操作都放在虫子角色的程序中就可以了,如图19-13所示。
图19-13 虫子角色最终的程序
当被点击时,要初始化变量,将其设为0,而在虫子碰到子弹时,要将score增加1,表示消灭敌人的数量又增加了一个。
本节知识点:
1. 学会循环条件嵌套。
2. 学会跳出循环。
扩展练习:
1. 加入更多敌人。
2. 通过修改虫子的移动速度,调整游戏难易等级。
发表评论 取消回复