### 介绍
在这个项目中,我们将学习如何创建一个太空战争游戏,游戏中我们必须拯救地球免受太空怪物的侵害。
### 游戏展示
点击绿色旗帜开始游戏,可以使用左右方向键控制飞船,使用空格键来射击。通过射击飞行的太空河马,尽可能多的得分。如果飞船被河马击中,或者被蝙蝠扔下的橙子击中,飞船将失去一条命。[点我下载资源](https://www.codxz.com/media/project/CloneWars.sb3)

### 可以学到的知识
1、如何使用键盘控制角色移动
2、如何克隆角色来制作副本
3、如何使用“广播”和“接收消息”来传递消息。
### 制作一个太空飞船
游戏中有一个宇宙飞船角色,宇宙飞船可以被左右按键控制,添加一下代码:

x轴是从舞台的左侧到右侧。这意味着当我们减少飞船角色的x坐标值时,它将往左移动,当我们增加x坐标值时,飞船将往右移动。
现在单击绿色旗帜测试我们的项目,检查是否可以按箭头键使我们的飞船左右移动。
### 闪电!!!
为了打败怪物,我们需要飞船可以发射闪电束!
从角色库中选择Lighting,如下图所示:


在游戏开始时,在飞船发射激光闪电之前,闪电角色应当是隐藏起来的。

此时,闪电比宇宙飞船还要大!
在闪电精灵已有的代码下,添加一些代码块使角色变小并向将其上下翻转。

现在它看起来像是尖尖的尾巴-首先从飞船中射出。
下面我们要实现,按下空格键时,要创建一个闪电的克隆,在宇宙飞船的角色中,添加如下代码:

每当游戏创建一个“闪电”角色克隆时,克隆的角色就会出现并且向上移动直到到达舞台顶端。 之后克隆就会消失。
将此代码添加到闪电角色,从而使其克隆向上移动,直到他们碰到舞台的边缘,然后他们将被删除。

现在我们可以按空格键来测试闪电是否被正确发射。
### 改进:优化闪电
当我们一直按着空格键时,会发生什么? 会一直发射闪电!!!
我们需要添加一个等待来优化发射速度,添加如下代码:

### 会飞的太空河马
现在,我们将添加许多试图破坏飞船的飞行河马。
在 Scratch 库中用“Hippo1” 图像创建一个新的角色。 使用收缩工具使河马角色和飞船差不多大小。

然后设置河马的旋转方式为左右旋转,点击河马角色,点击方向,在弹窗中选择中间的左右旋转,如下所示:

在游戏刚开始时,河马并不会立刻出现,在河马角色上添加一下代码:

添加一些代码到舞台,每隔几秒钟创建一个河马克隆,代码如下:

当一个新的克隆河马出现时,都应该出现在随机位置上,并且每个克隆都应该有随机的速度。
我们创建一个变量,名为“速度”,只应用河马角色,首先选中河马角色,然后点击变量,新建一个变量,如下:


当河马被克隆并启动时,选择随机的速度和起点,然后在屏幕上显示克隆,代码如下:

现在测试代码,是否每隔几秒钟出现一个新的河马?
目前河马还是静止的,每个河马都应该随机移动,直到被闪电击中。 要做到这一点,在河马角色已有的的代码脚本中的代码块下面附上此代码:

再次测试我们的代码。应该看到每隔几秒钟就会出现一个新的河马克隆,并且每个克隆应以不同的速度移动。

现在测试飞船的激光大炮。如果闪电击中河马,河马会消失吗?
### 爆炸的宇宙飞船!!!
当河马碰到您的飞船时,飞船应爆炸!
选择宇宙飞船角色,并将其造型命名为“正常”。画出另一只爆炸飞船的造型,并将新造型称为“命中”。
在这里,我们选择太阳作为飞船的爆炸造型,如下图所示:

然后使用工具稍微调整了下太阳的形状

在我们的宇宙飞船角色中添加一些代码,以便在游戏开始时显示“正常”造型,并在触碰到河马时切换为“命中”造型:

测试代码,当飞船与河马相撞时,宇宙飞船会切换成“命中”的造型吗?
### 消失的河马
当飞船爆炸时,所有河马都应消失,以便游戏中的玩家可以重新开始。
将代码添加到宇宙飞船角色中,在宇宙飞船碰到一只河马时使它广播 “击中”的消息。

所有的河马角色克隆都将收到“被击中”的消息, 并且可以指示他们在飞船被击中时消失,将此代码添加到河马角色:

选择测试代码,检查当河马击中飞船后,会不会所有的河马都消失?
飞船爆炸后,新的河马克隆出现,但飞船仍会爆炸!宇宙飞船被击中后需要自行重置。
在飞船角色的代码末尾添加一个等待代码块,以在河马再次出现之前创建一个小暂停。 然后添加一个重复执行代码块包含你所有的代码,让代码重复运行。

### 太空蝙蝠
为使我们的游戏变得更有难度一点,我们将要创建一个向飞船扔橙子的蝙蝠。

添加一个蝙蝠“Bat”角色并将其旋转风格设置为 左右旋转,然后让蝙蝠角色在舞台顶部从左至右移动重复执行。

现在来测试下代码,看蝙蝠能不能正常工作?
如果我们看一下蝙蝠的造型,我们会发现它有四种不同的造型,我们可以通过切换造型让它在移动时拍打翅膀,代码如下:

现在我们让蝙蝠扔橘子,从角色库中选择“Orange”角色,在游戏开始后,蝙蝠要不停的扔橘子,不过中间要间隔一定的时间,我们给蝙蝠添加一下代码:

现在我们给橘子添加代码,当橘子被克隆后,每个克隆都从蝙蝠角色上开始向舞台底部掉落。

将以下代码也添加到橙子上,以便当一个橙子的克隆击中太空飞船时, 克隆也消失,让玩家有机会重置:

现在要修改飞船代码,当橙子碰到飞船时,也会被击中,代码如下:

现在测试我们的游戏。如果飞船被正在坠落的橙子撞到,会发生什么情况?
### 挑战:完善我们的游戏
让孩子们去继续完善我们的游戏吧!!!
下面是一些完善的建议:
1、添加“生命”变量,比如游戏开始时,有3条生命,当宇宙飞船碰到河马或者橘子时失去1条生命。当生命耗尽时,游戏结束。
2、添加游戏结束画面。
3、添加医疗包,当医疗包出现,宇宙飞船碰到医疗包时,恢复1条生命。

4、添加得分,击落一个河马时,得一分,当分数达到100时,出现更多的河马。
5、添加一些浮石,飞船需要避开浮石。

6、控制飞船可以向前和向后移动。