初学者如何使用Scratch制作FlappyBird

由 小石头编程 发表于 2024年03月30日
![](https://www.codxz.com/media/upload/2024033016290480.png) 今天我们将学习如何在 Scratch 中制作一个 Flappy Bird!我们将向您展示如何使用空格键控制小鸟,构建移动的柱子,在小鸟穿过柱子时更新分数。在这里可以[点我下载完整项目](https://www.codxz.com/media/project/Flappybird.sb3) ## 下面让我们介绍下在Scratch中制作一个Flappy Bird ### 1、选择一个角色 首先,我们需要选择一个角色 (sprite)。建议选择一个拥有两个造型的角色,这样看起来就像角色会在屏幕上移动。我们选择鹦鹉(Parrot)作为角色。为了确保鹦鹉能够飞过柱子,我们需要调整它的大小。在右下角将角色的“大小”设置为 30。 ### 2、让鹦鹉动起来 接下来,我们将使用 Scratch 编程来编写鹦鹉的“拍打翅膀”动作。点击右下角的鹦鹉图标,确保在正确的位置添加代码块。 - 从“事件”中拖出“**当绿色旗帜被点**击”代码块。由于我们希望游戏进行时一直保持拍打翅膀的动作,所以从“控制” 中拖出“**重复执行**”代码块,并将其放入“**当绿色旗帜被点击**”代码块内。 - 在“重复执行”代码块内,从“控制”中拖出“**如果-那么-否则**”代码块。拍打翅膀的动作由空格键控制,每次用户按下空格键,鸟就会向上飞。我们将使用“侦测” 中的“**按下空格键**”代码块作为“**如果**”积木的条件。 - 如果条件成立(即按下空格键),我们希望鸟向上飞。我们可以使用“运动”中的“**将y坐标增加**”代码块,将其数值设置为**20**。为了让鸟看起来像是在飞翔,我们还需要在“**将y坐标增加**”之后使用“外观”中的“**换成parrrot-b造型**” 代码块。 - “否则”部分用于指示如果没有按下空格键会发生什么。这时,鹦鹉应该稍微向下掉落一点。为此,我们需要在 “否则”部分下方放置“**将y坐标增加**”代码块,数值设置为 **-5**。 为了让鹦鹉看起来像是在飞翔,我们仍然需要使用“外观”中的“**换成parrrot-a造型**”代码块来交替使用两种造型。 ![](https://www.codxz.com/media/upload/2024033017525994.png) ### 3、制作让鹦鹉可以穿越的柱子 我们将通过制作自定义角色来实现这一点。将鼠标悬停在右下角的圆圈上以添加角色,然后选择第三个选项(从上往下数),它看起来像一个画笔。 使用第一行最后一个选项中的“矩形”图标绘制一个柱子角色,如下图所示,我们放置了两个长竖直矩形和两个短水平矩形来制作我们的柱子。 ![](https://www.codxz.com/media/upload/2024033018405927.png) ### 4、制作游戏结束时的背景 我们还需要制作一个新的自定义背景,用来表示游戏结束。类似于我们创建自定义角色的方式,将鼠标悬停在右下角的圆圈上,选择第三个选项(看起来像画笔的那个)来添加背景。在第二列中使用"文字"选项,向用户显示游戏已结束的信息。 ![](https://www.codxz.com/media/upload/2024033021451627.png) ### 5、当小鸟碰到柱子时,结束游戏 点击柱子角色,我们可以为其添加一些代码。我们首先要做的是,如果柱子碰到鹦鹉,就停止游戏。我们从“事件”中选择"当绿旗被点击"积木块作为开始。接下来我们添加一个“**重复执行**”积木块,由于我们一直想检查鹦鹉是否与柱子发生碰撞,我们将一个"如果-那么"积木块放在“**重复执行**”里面。如果语句的条件是"****碰到Parrot****",确保柱子与鹦鹉发生碰撞时执行“**那么**”里的代码。 当发生这种情况时,我们想使用“**换成backdrop2背景**”来表示游戏已结束,并使用“停止全部脚本”来确保停止所有代码。 ![](https://www.codxz.com/media/upload/2024033021513730.png) ### 6、注意游戏开始和结束的细节 让我们回到鹦鹉的代码,并根据我们新的背景进行一些更改。我们想添加另一个事件块:“**当背景换成backdrop2**”,然后我们添加“**隐藏**”外观块,因为一旦游戏结束,我们就不想显示任何东西。 在之前添加的“**当绿色旗帜被点击**”和“****重复执行****”块之间,我们需要更多一些代码。首先,我们想要“**显示**”外观块,它确保我们在每个游戏的开始阶段都有鹦鹉,然后添加另一个外观块“**换成backdrop1背景**”,这将移除游戏结束时的背景。 之后,添加“**移到x:()y:()**”积木块,这将设置鹦鹉的起始位置。具体坐标并不重要,但要确保鹦鹉从屏幕左侧的某个垂直中间位置开始。我们将x设置为-190,y设置为30。 ![](https://www.codxz.com/media/upload/2024033022341779.png) 剩下的代码是为柱子添加额外的功能,所以点击那个角色来添加更多的代码块。和鹦鹉一样,我们也希望游戏结束后柱子消失。我们可以使用相同的块来实现这一点:“**当背景换到backdrop2**”和“**隐藏**”积木。 我们还希望游戏开始时显示柱子,因此将“**显示**”积木块放置在我们之前添加的“**当绿色旗帜点击**”和“**重复执行**”块之间。 ![](https://www.codxz.com/media/upload/2024033022435095.png) ### 7、让柱子穿越屏幕 我们接下来的任务是让柱子穿过屏幕,由于我们一开始将柱子放在右侧,所以要使它们向左移动。首先添加一个“**当绿色旗帜被点击**”块,然后添加一个“**重复执行**”块,我们希望在游戏仍在进行的情况下移动柱子。 在“**重复执行**”里面,我们想要一个“**移到x:()y:()**”的运动块,这将设置柱子的初始位置。为了让柱子在右侧出现,我们将x设置为180,y设置为28。然后,我们需要一个运动块来执行移动。选择“**在()秒内滑行到x:()y:()**”。我们将时间设置为2.5秒,但您可以随意调整这个数字。x值需要位于最左边,一旦柱子到达这一点,它们就会循环回到右边。我们将x设置为-280。由于柱子只会水平移动,我们不希望y值有任何变化。为了确保这一点,我们可以将y设置为“**y坐标**”。 ![](https://www.codxz.com/media/upload/2024033022542327.png) ### 8、创建一个分数变量 最后一步是跟踪分数,类似于我们在飞行猫游戏教程中所做的那样。转到“变量”标签,单击“**建立一个变量**”,并将其命名为“score”(分数)。添加一个“**当绿色旗帜被点击**”事件块,因为我们将在游戏开始时就开始跟踪分数,使用积木块“****将(score)设为0****”,这将在每场比赛开始时重置分数。 然后添加一个“**重复运行**”积木,在“**重复运行**”积木里添加“**如果-那么**”积木。如果语句的条件是当鹦鹉飞过柱子时,由于鹦鹉只会上下移动而不是水平移动,所以我们知道如果柱子移动到鹦鹉的位置后方,鹦鹉就会飞过去。在如果条件中,我们可以通过使用“<”运算符块来检测这一点,左侧将“x坐标”块,然后在右侧放置-190。这将检查柱子是否已移动到鹦鹉的x坐标之后。 在“**如果-那么**”语句内,我们使用“**将(score)增加1**”积木,每次鹦鹉通过时都要增加分数!之后,我们还要添加“**等待1秒**”积木,以确保每次鹦鹉飞过时分数只更新一次。 ![](https://www.codxz.com/media/upload/2024033023044004.png) 好了,游戏制作完成了,赶紧体验下吧。您可以使用不同的角色自定义游戏,并尝试不同的背景和主题,希望您玩的开心。