### 简介
在本项目中我们将制作一个游戏,在游戏中你需要向目标投掷雪球。
![](https://www.codxz.com/media/upload/2024071216383724.png)
使用鼠标指针来调整雪球的角度,并按住鼠标按钮来选择雪球的力量。
### 可以学到的知识
在本项目中,我们可以学到以下知识:
- 如何制作精灵动画
- 如何对鼠标输入做出反应
- 如何使用广播
### 项目制作
#### 1、搭建项目
首先使用Scratch创建一个新项目,然后添加背景,在这个项目中,我们选择背景“Winter”,如下所示:
![](https://www.codxz.com/media/upload/2024071216154758.png)
然后添加石块,在角色中,添加“Rocks”,如下所示:
![](https://www.codxz.com/media/upload/2024071216161156.png)
然后添加一头驯鹿,在角色中,添加“Reindeer”,如下所示:
![](https://www.codxz.com/media/upload/2024071216170962.png)
然后摆放石块和驯鹿,如下图所示:
![](https://www.codxz.com/media/upload/2024071216183346.png)
#### 2、制作雪球
在这个章节中,我们将制作一个雪球,你可以在舞台上四处投掷它。
首先,上传一个角色“Snowball”,下面是资源图:
![](https://www.codxz.com/media/upload/2024071215443176.png)
![](https://www.codxz.com/media/upload/2024071215443119.png)
"Snowball"精灵包含两个造型,一个是正常造型,另一个显示雪球朝向的方向。
![](https://www.codxz.com/media/upload/2024071215462842.png)
首先,让我们允许玩家改变雪球的角度,将以下代码添加到雪球精灵中:
![](https://www.codxz.com/media/upload/2024071215491647.png)
通过点击绿旗来测试项目,我们应该会看到雪球跟随鼠标移动,直到按下鼠标按钮。
![](https://www.codxz.com/media/upload/2024071215503249.png)
让我们也允许玩家决定雪球应该被投掷的力度,创建一个名为"power"的新变量。
将你的新变量显示拖到舞台底部,靠近雪球的位置。右键变量显示,然后点击"滑杆"。
![](https://www.codxz.com/media/upload/2024071215520198.png)
添加代码,使得当点击旗帜时,将你的power变量设置为0,如下所示:
![](https://www.codxz.com/media/upload/2024071215533855.png)
现在我们已经有了一个power变量,你可以在选择方向之后使用以下代码来增加雪球的力度
![](https://www.codxz.com/media/upload/2024071215555094.png)
这段代码意味着在选择方向之后,我们必须持续按住鼠标按钮来选择雪球的力度。
#### 3、扔雪球
在雪球代码的末尾添加一个区块,用来广播我们正在投掷雪球。
![](https://www.codxz.com/media/upload/2024071215573821.png)
将这段代码添加到雪球中,使其移动直到到达舞台边缘时隐藏
![](https://www.codxz.com/media/upload/2024071215591624.png)
这段代码使用力度变量来决定移动的速度。
现在我们已经在雪球触碰边缘时隐藏了它,请在点击旗帜时添加代码来显示雪球,就在雪球切换到瞄准造型之后,如下所示:
![](https://www.codxz.com/media/upload/2024071216005027.png)
测试雪球几次,它是否以不同的角度和不同的速度移动?
如果你想能够多次投掷雪球,只需在"当绿旗被点击"代码外围添加一个永远循环,如下所示:
![](https://www.codxz.com/media/upload/2024071216020879.png)
#### 4、真实的雪球移动
现在我们已经有了一个雪球,我们可以让它的运动更加真实一些。
首先,让我们设置一个最大力度水平,这样雪球就不会被投掷得太用力。
在雪球的"当绿旗被点击"代码中,我们需要只在力度小于20时增加力度。将代码改为:
![](https://www.codxz.com/media/upload/2024071216083792.png)
再次测试雪球,你会看到力度永远不会超过20。
现在雪球的最大力度是20,我们也可以将这个设置为变量滑块的最大值。右键点击power变量,然后点击"改变滑块范围",如下所示:
![](https://www.codxz.com/media/upload/2024071216112538.png)
![](https://www.codxz.com/media/upload/2024071216121232.png)
我们也可以通过在雪球飞行过程中略微减少力度来使雪球减速,将这个代码块添加到雪球的"当接收到throw"代码中:
![](https://www.codxz.com/media/upload/2024071216135382.png)
测试这段新代码 - 它的效果是否如我们预期的那样?你可能会注意到力度持续减少,最终雪球甚至会向后移动!
为了修复这个问题,你可以在代码中添加一个“如果”块,这样只有当power大于 0 时才会降低力度,如下所示:
![](https://www.codxz.com/media/upload/2024071216205517.png)
项目差不多完成了,但我们还需要给雪球添加一些重力,这样它才会落到地面上。
我们可以通过以下代码持续向下移动雪球来添加重力效果,如下所示:
![](https://www.codxz.com/media/upload/2024071216221709.png)
再次测试雪球,我们应该会看到雪球移动得更加真实了。
#### 5、添加目标
在第一章节中,我们把添加的驯鹿作为雪球的目标,然后添加代码,当被击中时说“你击中我了”,如下所示:
![](https://www.codxz.com/media/upload/2024071216250372.png)
让我们做几件事来使游戏变得更难,首先,让我们在玩家每次投掷雪球时移动驯鹿。
要做到这一点,首先在永远循环的顶部附近雪球添加一个广播,这将让驯鹿知道新的一轮投掷即将开始,如下图所示:
![](https://www.codxz.com/media/upload/2024071216280027.png)
当驯鹿接收到这个消息时,用以下代码将它移动到一个新的随机位置:
![](https://www.codxz.com/media/upload/2024071216283934.png)
通过投掷几个雪球来测试项目,目标是否每次都改变位置?
我们还可以通过在雪球前面添加一块岩石来使游戏变得更难,比如在第一章节中添加的石块。
我们现在修改雪球的代码,当雪球碰到屏幕边缘或者碰到石块时停止,代码如下:
![](https://www.codxz.com/media/upload/2024071216320043.png)
最后,我们还可以通过缩小雪球和驯鹿的尺寸来使游戏变得更难。
#### 6、挑战:完善我们的游戏
我们可以通过以下方式来完善我们的游戏:
1. 改变代码中的数字,使雪球移动得更快、更高或更远。
2. 添加音乐和音效。
3. 当目标被击中时改变精灵的造型。
4. 添加分数和最高分。
5. 驯鹿可以移动,这样更难击中它。
6. 可以添加雪花或鸟儿来阻止雪球。
7. 你可以添加第二个玩家,这样你们都可以向驯鹿投掷雪球...或者互相投掷!