互动电路:用Scratch制作开关灯游戏

从零开始,用积木搭建一个有趣的电路模拟游戏!

由 小石头编程 发表于 2026年01月10日 · 阅读量 9
## 👋 项目介绍 欢迎来到"互动电路"项目!在这个有趣的游戏中,你将扮演电路工程师,通过拖拽开关、电池和电路路径来连接电路,控制灯泡的亮灭。当所有零件正确连接且开关打开时,灯泡就会亮起!这个项目不仅展示了电路的基本原理,还让你体验变量控制、条件判断和碰撞检测等核心编程概念。 ## 🎯 你将学会 * 使用变量控制游戏状态和计数 * 通过碰撞检测实现物体交互逻辑 * 运用条件判断实现开关与灯泡的联动 * 掌握拖拽功能增强用户交互体验 * 利用造型切换实现视觉反馈效果 ## 🛠️ 开始制作 ### 第一步:初始化项目与舞台背景 **目标**:创建新项目并设置舞台背景,为电路游戏搭建基础场景。 **操作步骤**: 打开Scratch软件,创建一个新项目。点击舞台区域的"选择背景"按钮,在背景库中找到"backdrop1"并点击添加。这个背景将作为电路板的基础场景。 **逻辑解析**: 舞台背景是游戏场景的"画布",选择一个深色背景能更好地突出电路元件的视觉效果,让玩家更专注于电路连接。 <!--SHOT:action:1--> ![占位:操作步骤 1](https://www.codxz.com/media/upload/2026011014211752_screenshot_1.png) ### 第二步:创建全局变量 **目标**:创建两个布尔型变量,用于控制开关状态和连接状态。 **操作步骤**: 点击舞台角色,切换到"代码"标签。点击"变量"类别,点击"新建变量",输入变量名"ON or OFF",选择"适用于所有角色"。同样创建第二个变量"connections complete"。 **逻辑解析**: 变量是存储数据的容器,"ON or OFF"用于记录开关状态(开/关),"connections complete"用于统计正确连接的零件数量,这些变量是实现游戏逻辑的关键。 ### 第三步:添加角色与基础设置 **目标**:添加四个核心角色(电路路径、电池、开关、灯泡)并设置初始造型。 **操作步骤**: 点击角色区域的"选择一个角色"按钮,在角色库中找到并添加"Circuit Path"角色。同样添加"Battery"、"Switch"和"Lightbulb"角色。选择Circuit Path角色,点击"造型"标签,点击"选择造型"按钮,添加"costume - ON"造型。 **逻辑解析**: 每个角色都有特定功能:电路路径作为连接线,电池提供电源,开关控制电路通断,灯泡作为输出元件。正确设置造型能让玩家直观理解元件状态。 <!--SHOT:action:6--> ![占位:操作步骤 6](https://www.codxz.com/media/upload/2026011014211752_screenshot_6.png) ### 第四步:Circuit Path 基础移动 **目标**:实现点击触发移动到指定位置并设置拖拽模式。 **操作步骤**: 选择Circuit Path角色,切换到"代码"标签。从"事件"类别拖入"当角色被点击"积木,从"运动"类别拖入"移到 x: (-56) y: (-25)"积木。从"侦测"类别拖入"将拖拽模式设置为可拖动"积木。 **代码实现**: ```scratch when this sprite clicked go to x: (-56) y: (-25) set drag mode [可拖动 v] ``` **逻辑解析**: 当玩家点击电路路径时,它会自动移动到预设位置并允许被拖拽,这样玩家就可以自由调整电路路径的位置来连接其他元件。 **避坑指南**: 确保拖拽模式设置正确,否则玩家将无法拖动电路路径。坐标值可以根据舞台布局调整,但要保持与其他元件的相对位置关系。 ### 第五步:Battery 基础移动 **目标**:实现点击触发移动到指定位置并设置拖拽模式。 **操作步骤**: 选择Battery角色,切换到"代码"标签。从"事件"类别拖入"当绿旗被点击"积木,从"运动"类别拖入"移到 x: (-56) y: (-25)"积木。从"侦测"类别拖入"将拖拽模式设置为可拖动"积木。 **代码实现**: ```scratch when flag clicked go to x: (-56) y: (-25) set drag mode [可拖动 v] ``` **逻辑解析**: 游戏开始时,电池会自动移动到指定位置并允许被拖拽,这样玩家就可以将它放到电路中的正确位置来提供电源。 **避坑指南**: 注意区分"当绿旗被点击"和"当角色被点击"事件,这里使用绿旗事件确保游戏初始化时电池就位。 ### 第六步:Switch 基础交互 **目标**:实现点击触发切换造型并改变开关状态。 **操作步骤**: 选择Switch角色,切换到"代码"标签。从"事件"类别拖入"当角色被点击"积木,从"声音"类别拖入"播放声音 Click"积木(如果声音库中没有,先添加Click声音)。从"控制"类别拖入"如果…那么…否则"积木,在条件中添加"ON or OFF = OFF"判断,在"那么"分支添加"设置ON or OFF为ON"和"切换到costume - ON造型",在"否则"分支添加"设置ON or OFF为OFF"和"切换到costume - OFF造型"。 **代码实现**: ```scratch when this sprite clicked start sound [Click v] if <(ON or OFF) = [OFF]> then set [ON or OFF v] to [ON] switch costume to (costume - ON v) else set [ON or OFF v] to [OFF] switch costume to (costume - OFF v) end ``` **逻辑解析**: 当玩家点击开关时,它会切换开关状态(ON/OFF)并改变对应造型,同时播放点击声音增强交互体验。开关状态会影响整个电路的通断。 ### 第七步:Lightbulb 基础交互 **目标**:实现点击触发移动并设置初始关闭状态。 **操作步骤**: 选择Lightbulb角色,切换到"代码"标签。从"事件"类别拖入"当绿旗被点击"积木,从"运动"类别拖入"移到 x: (-1) y: (61)"积木。从"侦测"类别拖入"将拖拽模式设置为可拖动"积木。从"外观"类别拖入"切换造型到 costume - OFF"积木。 **代码实现**: ```scratch when flag clicked go to x: (-1) y: (61) set drag mode [可拖动 v] switch costume to (costume - OFF v) ``` **逻辑解析**: 游戏开始时,灯泡会移动到指定位置并允许被拖拽,同时初始设置为关闭状态(造型为OFF)。当电路接通时,它会切换到亮起状态。 ### 第八步:Circuit Path 交互逻辑 **目标**:实现开关状态同步与造型切换逻辑。 **操作步骤**: 选择Circuit Path角色,切换到"代码"标签。在已有代码基础上,从"控制"类别拖入"永远"积木包裹现有代码。在"永远"循环内添加"如果…那么…否则"积木,在条件中添加"ON or OFF = ON 且 connections complete = 3"判断,在"那么"分支添加"切换到costume - ON造型",在"否则"分支添加"切换到costume - OFF造型"。 **代码实现**: ```scratch when flag clicked set [connections complete v] to [0] go to [back v] layer forever if <<(ON or OFF) = [ON]> and <(connections complete) = [3]>> then switch costume to (costume - ON v) else switch costume to (costume - OFF v) end end ``` **逻辑解析**: 电路路径会根据开关状态和连接数量实时改变造型。当开关打开且所有三个元件都正确连接时,显示ON造型(通电状态),否则显示OFF造型(断电状态)。 **避坑指南**: 确保"connections complete"变量在游戏开始时初始化为0,否则计数逻辑会出错。同时将电路路径设置为"back"层,避免遮挡其他元件。 <!--SHOT:action:33--> ![占位:操作步骤 33](https://www.codxz.com/media/upload/2026011014211752_screenshot_33.png) ### 第九步:Battery 交互逻辑 **目标**:实现颜色检测与计数器更新逻辑。 **操作步骤**: 选择Battery角色,切换到"代码"标签。在已有代码基础上,从"控制"类别拖入"永远"积木。在循环内添加"如果…那么"积木,在条件中添加"碰到颜色 #00ffe6 且 碰到颜色 #fff700"判断,在"那么"分支添加"将connections complete增加1"积木,再添加"等待直到不碰到这两个颜色"积木,最后添加"将connections complete减少1"积木。 **代码实现**: ```scratch when flag clicked forever if <<touching color (#00ffe6)?> and <touching color (#fff700)?>> then change [connections complete v] by (1) wait until <not <<touching color (#00ffe6)?> and <touching color (#fff700)?>>> change [connections complete v] by (-1) end end ``` **逻辑解析**: 当电池同时碰到两种特定颜色(代表电路连接点)时,增加连接计数器;当它离开连接点时,减少计数器。这样就能检测到电池是否被正确放置到电路中。 ### 第十步:Switch 高级逻辑 **目标**:实现拖拽状态与变量同步逻辑。 **操作步骤**: 选择Switch角色,切换到"代码"标签。在已有代码基础上,从"控制"类别拖入"永远"积木。在循环内添加"如果…那么"积木,在条件中添加"connections complete < 3"判断,在"那么"分支添加"设置ON or OFF为OFF"和"切换到costume - OFF造型"积木。 **代码实现**: ```scratch when flag clicked forever if <(connections complete) < [3]> then set [ON or OFF v] to [OFF] switch costume to (costume - OFF v) end end ``` **逻辑解析**: 当连接数量不足3个时,开关会自动关闭并切换到OFF造型。这确保只有当所有元件都正确连接时,开关才能保持打开状态,模拟真实电路的安全特性。 ### 第十一步:Lightbulb 高级逻辑 **目标**:实现颜色检测与灯泡状态循环逻辑。 **操作步骤**: 选择Lightbulb角色,切换到"代码"标签。在已有代码基础上,从"控制"类别拖入"永远"积木。在循环内添加"如果…那么"积木,在条件中添加"ON or OFF = ON 且 connections complete = 3"判断,在"那么"分支添加"播放声音Buzz Short"、"切换到Bulb On造型"和"等待直到条件不满足"积木。在"等待"之后添加"切换到Bulb Off造型"积木。再添加一个"永远"循环实现与Battery相同的颜色检测逻辑。 **代码实现**: ```scratch when flag clicked forever if <<(ON or OFF) = [ON]> and <(connections complete) = [3]>> then start sound [Buzz Short v] switch costume to (Bulb On v) wait until <<(ON or OFF) = [OFF]> or <(connections complete) < [3]>> end switch costume to (Bulb Off v) end when flag clicked forever if <<touching color (#00ffe6)?> and <touching color (#fff700)?>> then change [connections complete v] by (1) wait until <not <<touching color (#00ffe6)?> and <touching color (#fff700)?>>> change [connections complete v] by (-1) end end ``` **逻辑解析**: 灯泡会根据开关状态和连接数量决定是否亮起。当条件满足时,播放"通电"声音并切换到亮起造型;否则保持关闭状态。同时,它也检测颜色变化来更新连接计数器,确保只有正确连接时才会亮起。 ![](https://www.codxz.com/media/upload/2026011014223407.png) ### 第十二步:最终演示 通过运行项目,我们可以验证所有功能是否正常工作。当玩家正确连接所有元件并打开开关时,灯泡亮起,成功完成电路连接。这个完整流程展示了变量控制、条件判断和碰撞检测的综合应用。 ![](https://www.codxz.com/media/upload/2026011014234672.png) ## 🚀 挑战一下 试试给游戏增加更多挑战!你可以: 1. 添加一个"失败计数器",当玩家错误连接时增加计数 2. 设计多个关卡,每个关卡有不同的连接要求 3. 增加时间限制,让玩家在限定时间内完成电路连接 4. 添加音效反馈,当连接正确/错误时播放不同声音 ## 🎉 结语 恭喜你完成了"互动电路"项目!通过这个项目,你不仅学习了Scratch的基础编程概念,还体验了如何用编程模拟现实世界的物理现象。变量、条件判断和碰撞检测是游戏开发的核心技能,掌握它们你就能创造更多有趣的项目!继续探索Scratch的无限可能吧!

项目下载