为孩子们准备的Scratch冬天小游戏:打雪仗

由 小石头编程 发表于 2024年07月12日
### 简介 在本项目中我们将制作一个游戏,在游戏中你需要向目标投掷雪球。 ![](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. 你可以添加第二个玩家,这样你们都可以向驯鹿投掷雪球...或者互相投掷!