FlappyBird:为孩子们准备的Scratch小游戏

跟着教程制作你的第一个Flappy Bird游戏!

由 小石头编程 发表于 2026年01月24日 · 阅读量 116
## 👋 项目介绍 欢迎来到飞翔小鸟大冒险!在这个有趣的游戏中,你将控制一只可爱的小鸟穿越充满障碍的管道世界。玩家通过按空格键或点击屏幕让小鸟飞翔,躲避不断移动的管道障碍。游戏包含计分系统、最高分记录和生动的音效反馈,非常适合初学者学习游戏编程的核心概念。准备好体验这个既简单又充满挑战的小游戏吧! ## 🎯 你将学会 * 克隆体的创建与控制 * 变量的初始化与动态更新 * 消息广播机制的应用 * 碰撞检测的实现方法 * 多角色协同工作逻辑 ## 🛠️ 开始制作 ### 第一步:初始化项目与舞台设置 **目标**:创建新项目并准备游戏舞台,为后续开发打下基础。 **操作步骤**: 1. 打开Scratch编辑器 2. 点击舞台区域的"背景"选项卡 3. 从背景库中选择编号为1的背景(蓝天背景) 4. 删除默认的白色背景 5. 在声音库中添加"pop"音效,用于游戏交互反馈 ![action:1](https://www.codxz.com/media/upload/2026012412415620_screenshot_1.png) ### 第二步:添加舞台背景与声音 **目标**:完善舞台资源,添加游戏所需的声音效果。 **操作步骤**: 1. 确保已选择舞台角色 2. 在声音选项卡中添加以下声音: - pickupCoin (6) - 用于得分音效 - laserShoot (6) - 用于碰撞音效 - pickupCoin (2) - 用于跳跃音效 3. 删除默认的"Meow"声音 **避坑指南**:确保所有声音文件都正确加载,避免后续代码中调用声音时出现错误。 ### 第三步:创建全局变量 **目标**:建立游戏的核心数据变量,控制角色运动和分数系统。 **操作步骤**: 1. 在舞台的"变量"选项卡中创建以下全局变量: - Y speed:控制小鸟的垂直速度 - speed:控制管道移动速度 - Score:记录当前得分 - ☁ World record:保存历史最高分 2. 保持变量默认显示在舞台上 ![action:8](https://www.codxz.com/media/upload/2026012412415620_screenshot_8.png) ### 第四步:添加角色Player与造型 **目标**:创建游戏主角小鸟角色并准备基础资源。 **操作步骤**: 1. 点击角色库中的"添加角色"按钮 2. 选择"Player"角色(小鸟形象) 3. 在声音选项卡中添加: - pickupCoin (2) - 跳跃音效 - laserShoot (6) - 碰撞音效 **避坑指南**:确保Player角色的名称拼写正确,后续代码中会精确使用这个名称。 ### 第五步:为Player创建私有变量 **目标**:添加角色特有的控制变量,实现小鸟的物理运动效果。 **操作步骤**: 1. 选择Player角色 2. 在"变量"选项卡中创建私有变量: - Direction Player:控制小鸟的倾斜角度 ![action:23](https://www.codxz.com/media/upload/2026012412415620_screenshot_23.png) ### 第六步:Player基础移动与交互逻辑 **目标**:实现小鸟的核心运动机制和用户交互响应。 **操作步骤**: 1. 选择Player角色,切换到代码标签 2. 添加以下代码块: ```scratch when I receive [Start v] point in direction (0) set [Y speed v] to [0] set [Direction Player v] to [-1] go to x: (0) y: (0) show switch costume to (Player v) forever point in direction (((0) - (Direction Player)) * (0.5)) change [Y speed v] by (-0.5) change [Direction Player v] by ((Y speed) * (0.75)) change y by (Y speed) if <<key [up arrow v] pressed?> or <mouse down?>> or <<key [space v] pressed?> or <key [w v] pressed?>>> then set [Y speed v] to [4] end if <<touching [_edge_ v]?> or <touching [Pipes v]?>> then broadcast (Death v) end end ``` 3. 添加隐藏代码: ```scratch when flag clicked hide ``` **逻辑解析**:这段代码实现了小鸟的物理引擎。重力加速度不断减小Y速度,当用户按下跳跃键时,给小鸟一个向上的冲力。同时检测碰撞边界或管道,触发死亡事件。 ![action:92](https://www.codxz.com/media/upload/2026012412415620_screenshot-screenshot_92.png) ### 第七步:添加Pipes角色与资源 **目标**:创建管道障碍物角色并准备多造型资源。 **操作步骤**: 1. 点击角色库中的"添加角色"按钮 2. 选择"Pipes"角色(管道形象) 3. 在造型选项卡中添加: - Pipes2 - Pipes3 - Pipes4 4. 在声音选项卡中添加: - pickupCoin (6) - 得分音效 - laserShoot (6) - 碰撞音效 - pop - 交互音效 **避坑指南**:确保所有管道造型名称正确,后续克隆时会随机选择这些造型。 ### 第八步:为Pipes创建变量 **目标**:建立管道的移动控制变量。 **操作步骤**: 1. 选择Pipes角色 2. 在"变量"选项卡中创建私有变量: - Pipe speed:控制管道移动速度 ### 第九步:Pipes移动与生成逻辑 **目标**:实现管道的自动生成、移动和克隆控制机制。 **操作步骤**: 1. 选择Pipes角色,切换到代码标签 2. 添加以下代码块: ```scratch when I receive [Start v] clear graphic effects switch costume to (Pipes1 v) show set [Pipe speed v] to [-3] show variable [☁ World record v] show variable [Score v] set [Score v] to [0] go to x: (300) y: (pick random (100) to (-100)) repeat until <touching [Player v]?> Fast work end ``` 3. 创建自定义积木"Fast work": ```scratch define Fast work change x by (Pipe speed) if <(x position) = [2]> then change [Score v] by (1) repeat (1) start sound [pickupCoin (6) v] end create clone of (_myself_ v) end if <(x position) = [-257]> then hide end if <touching [Player v]?> then repeat (1) start sound [laserShoot (6) v] end end ``` **逻辑解析**:管道从右侧出现,以恒定速度向左移动。当通过屏幕中心时得分并克隆新管道,当移出屏幕时隐藏。碰到小鸟时触发碰撞音效。 ![action:213](https://www.codxz.com/media/upload/2026012412415620_screenshot_213.png) ### 第十步:Pipes交互与克隆控制 **目标**:完善管道的交互响应和克隆体管理。 **操作步骤**: 1. 添加克隆体启动代码: ```scratch when I start as a clone go to x: (300) y: (pick random (100) to (-100)) switch costume to (join [Pipes] (pick random (1) to (4))) show repeat until <touching [Player v]?> change x by (Pipe speed) if <(x position) = [2]> then change [Score v] by (1) repeat (1) start sound [pickupCoin (6) v] end create clone of (_myself_ v) end if <<<<(x position) = [-256]> or <(x position) = [-257]>> or <(x position) = [-258]>> or <(x position) = [-259]>> then delete this clone end end ``` 2. 添加点击响应: ```scratch when this sprite clicked broadcast (Jump noise v) wait until <not <<touching [mouse-pointer v]?> and <mouse down?>> ``` **避坑指南**:确保克隆体的删除条件正确,避免内存泄漏。 ### 第十一步:Died text基础设置 **目标**:创建游戏结束提示角色并初始化。 **操作步骤**: 1. 点击角色库中的"添加角色"按钮 2. 选择"Died text"角色(游戏结束文字) 3. 在声音选项卡中添加"pop"音效 4. 添加基础代码: ```scratch when flag clicked hide forever go to x: (0) y: (0) end ``` ### 第十二步:为Died text创建变量 **目标**:为游戏结束界面添加分数显示变量。 **操作步骤**: 1. 选择Died text角色 2. 在"变量"选项卡中创建全局变量: - Score:用于显示最终得分 ### 第十三步:Died text交互与广播 **目标**:实现游戏结束提示的显示和事件广播。 **操作步骤**: 1. 添加代码块: ```scratch when I receive [Died text v] show broadcast (End v) ``` **逻辑解析**:当接收到死亡信号时显示结束文字,并广播结束事件通知所有角色停止运行。 ![action:395](https://www.codxz.com/media/upload/2026012412415620_screenshot-screenshot_395.png) ### 第十四步:添加Play button角色与资源 **目标**:创建游戏开始按钮并准备资源。 **操作步骤**: 1. 点击角色库中的"添加角色"按钮 2. 选择"Play button"角色(开始按钮) 3. 添加第二个造型"Play button2" 4. 在声音选项卡中添加"pickupCoin (6)"音效 ### 第十五步:为Play button创建变量 **目标**:为按钮添加控制变量。 **操作步骤**: 1. 选择Play button角色 2. 在"变量"选项卡中创建私有变量: - Direction Player - NUM1 - NUM2 ### 第十六步:Play button基础移动与方向控制 **目标**:实现按钮的浮动动画和鼠标交互效果。 **操作步骤**: 1. 添加代码块: ```scratch when flag clicked go to x: (0) y: (-75) show switch costume to (Play button v) forever set y to ((-75) + (([sin v] of ((timer) * (300)) ) * (2))) point in direction ((90) + (([sin v] of ((timer) * (200)) ) * (2))) if <touching [mouse-pointer v]?> then switch costume to (Play button2 v) set size to ((175) - ((size) / (2))) % else switch costume to (Play button v) set size to ((150) - ((size) / (2))) % end end ``` **逻辑解析**:按钮通过正弦函数实现上下浮动和旋转效果,鼠标悬停时切换造型并放大,增强交互感。 ![action:406](https://www.codxz.com/media/upload/2026012412415620_screenshot-screenshot_406.png) ### 第十七步:Play button交互与高级功能 **目标**:实现游戏开始控制和高级交互逻辑。 **操作步骤**: 1. 添加代码块: ```scratch when flag clicked forever wait until <touching [mouse-pointer v]?> start sound [pickupCoin (6) v] wait until <not <touching [mouse-pointer v]?>> end ``` 2. 添加启动控制: ```scratch when I receive [Start v] stop [other scripts in sprite v] hide delete this clone ``` 3. 添加点击响应: ```scratch when this sprite clicked wait until <mouse down?> hide broadcast (Start v) ``` **避坑指南**:确保"Start"广播事件正确触发,所有角色都能接收到开始信号。 ### 第十八步:添加Background角色与资源 **目标**:创建背景角色并添加随机变化效果。 **操作步骤**: 1. 点击角色库中的"添加角色"按钮 2. 选择"Background"角色(背景元素) 3. 添加第二个造型(云朵造型) 4. 在声音选项卡中添加"pop"音效 5. 创建私有变量: - Scroll speed:背景滚动速度 - Chance:随机变化概率 ### 第十九步:Background交互与广播 **目标**:实现背景的随机变化和点击响应。 **操作步骤**: 1. 添加代码块: ```scratch when flag clicked set [Chance v] to (pick random (1) to (100)) forever go to [back v] layer go to x: (0) y: (0) if <(Chance) = [1]> then switch costume to (2 v) else switch costume to (1 v) end end ``` 2. 添加点击响应: ```scratch when this sprite clicked broadcast (Jump noise v) wait until <not <<touching [mouse-pointer v]?> and <mouse down?>> ``` ![action:489](https://www.codxz.com/media/upload/2026012412415620_screenshot-screenshot_489.png) ### 第二十步:添加Name of game角色 **目标**:创建游戏标题角色并添加动画效果。 **操作步骤**: 1. 点击角色库中的"添加角色"按钮 2. 选择"Name of game"角色(游戏标题) 3. 在声音选项卡中添加"pop"音效 4. 添加代码块: ```scratch when flag clicked show go to x: (0) y: (-75) forever set y to ((100) + (([sin v] of ((timer) * (400)) ) * (2))) point in direction ((90) + (([sin v] of ((timer) * (200)) ) * (2))) end ``` 5. 添加隐藏控制: ```scratch when I receive [Start v] hide ``` **逻辑解析**:标题角色通过正弦函数实现上下浮动效果,游戏开始时隐藏,保持界面整洁。 ![action:533](https://www.codxz.com/media/upload/2026012412415620_screenshot-screenshot_533.png) ### 第二十一步:最终演示与截图 **目标**:运行整个项目并测试所有功能。 **操作步骤**: 1. 点击绿旗开始游戏 2. 点击开始按钮启动游戏 3. 按空格键或点击屏幕控制小鸟飞翔 4. 观察管道生成和移动效果 5. 测试碰撞检测和游戏结束流程 6. 尝试刷新最高分记录 **避坑指南**:确保所有角色都正确接收到"Start"和"End"广播事件,避免游戏状态混乱。 ![action:569](https://www.codxz.com/media/upload/2026012412415620_screenshot_569.png) ## 🚀 挑战一下 试试给游戏添加以下功能: 1. 增加难度选择(简单/困难模式) 2. 添加不同类型的障碍物 3. 实现小鸟的加速冲刺功能 4. 设计更精美的游戏界面 5. 添加音量控制按钮 ## 🎉 结语 恭喜你完成了飞翔小鸟大冒险的制作!通过这个项目,你掌握了Scratch中克隆体、变量控制和消息广播等核心概念。现在你已经具备了制作简单游戏的基础能力,可以尝试创作属于自己的游戏世界了。记住,编程就像搭积木一样有趣,不断尝试和探索,你会创造出更精彩的作品!

项目下载