2026 年杭州市中小学科学与工程大赛的创意编程比赛正在火热征集中。该赛项线上申报通道从 6 月 15 日一直开放到 10 月 10 日,图形化编程设小学 I 组(1--3 年级)、小学 II 组(4--6 年级)和初中组,作品类型覆盖科学探索类、实用工具类、互动艺术类、互动游戏类 四大方向。今天我们就围绕「科学探索 + 实用工具」做一次真题式拆解,用图形化编程做一个既好玩又有科普意义的原创项目:校园雨水收集站。

一、赛事背景与项目目标
杭州市中小学科学与工程大赛的创意编程赛项鼓励「原创、贴近生活、跨学科融合」。评分维度通常包括:作品原创性、创意构思、用户体验、艺术审美与程序技术(运行稳定、结构清晰)。
项目目标(校园雨水收集站)
模拟校园里的雨水回收系统:下雨时天上飘落雨滴,落到集雨桶中让水量不断上涨;桶满则自动提醒「溢出」,并把收集到的雨水折算成「节水积分」。同时嵌入一个轻量的「节水小问答」,答对加分,积分可以「兑换虚拟绿植」,引导孩子理解雨水回收与节约用水。
这个项目天然覆盖了图形化编程的核心积木:列表、克隆体、变量、循环、条件、自制积木、广播,非常适合作为该赛项的参赛作品或练习题。
二、核心考点
| 考点 | 在本项目中的用途 |
|---|---|
| 列表 | 存放「节水问答」的题目库、正确答案库、已作答标记 |
| 克隆体 | 不断生成下落的雨滴,每个雨滴用私有变量记录下落速度 |
| 变量 | 水箱水量、节水积分、当前题号、倒计时 等全局状态 |
| 循环 | 主循环驱动整个场景;雨滴克隆体内部循环控制持续下落 |
| 条件 | 判断雨滴是否落到桶口、桶是否装满、问答是否答对、是否超时 |
| 自制积木 | 封装「画集雨桶」「生成一道题」「刷新积分」「结算」等重复动作 |
| 广播 | 解耦「开始下雨 / 桶满提醒 / 答对 / 答错 / 游戏结算」等事件 |
三、题目与项目拆解
3.1 场景与角色
- 背景:校园一角,地面有一个半透明的集雨桶。
- 角色 1(雨云):在顶部左右缓慢移动,定时「下蛋」式生成雨滴克隆体。
- 角色 2(集雨桶):显示当前水量进度,水量满时变色并广播提醒。
- 角色 3(问答面板):弹出题目与选项,处理对错判定。
- 角色 4(绿植) :用
节水积分兑换,兑换后长大一截,作为正向反馈。
3.2 变量与列表设计
建议新建以下全局变量:
水箱水量(0--100,单位「升」的示意值)节水积分(答对题或集满水时增加)当前题号(从 1 开始,答完自增)倒计时(每题限时,如 15 秒)
列表:
题目库:如「洗菜水可以用来浇花吗?」「雨水能直接喝吗?」等答案库:与题目一一对应的正确答案(如能/不能)已答:标记每题是否已作答,避免重复计分
3.3 雨滴下落(克隆体 + 循环 + 条件)
雨云角色的核心逻辑,用「当作为克隆体启动时」配合循环实现:
- 雨滴克隆体在随机 x 坐标、固定 y 顶部出现;
- 用私有变量
速度给每个雨滴不同的下落节奏; 重复执行:将 y 坐标减少速度;如果雨滴 y 坐标落到集雨桶口高度:将 水箱水量 增加 1→删除此克隆体;如果雨滴落到地面仍未进桶:删除此克隆体(避免无限堆积)。
小技巧:用「当作为克隆体启动时」而不是在主体里写下落,可以保证多滴雨同时下落且互不干扰。
3.4 水箱累加与溢出提醒(变量 + 广播)
集雨桶角色持续监听水量:
如果 水箱水量 > 100:将 水箱水量 设为 100→广播「桶满提醒」;- 收到「桶满提醒」后:桶身变红、弹出「雨水已满,快去浇绿植!」,并
将 节水积分 增加 5作为奖励; - 用
将 水箱水量 的 ... % 显示在 ...或画一个随水量升高的蓝色矩形,直观呈现水位。
3.5 节水小问答(列表 + 条件)
问答面板逻辑:
将 当前题号 设为 1;重复执行(直到 当前题号 > 题目库 的长度):- 自制积木
出题:读取题目库[当前题号]显示在面板上,附「能 / 不能」两个按钮角色; - 等待玩家点击;点击后用
如果 回答 = 答案库[当前题号]判定:- 答对:
将 节水积分 增加 3→广播「答对」; - 答错:
广播「答错」;
- 答对:
将 已答[当前题号] 设为 1→将 当前题号 增加 1。
3.6 主流程串联(广播解耦)
用广播把各模块「解耦」,避免互相硬等:
- 绿旗开始 →
广播「开始下雨」(雨云启动生成克隆体)+广播「开始答题」(问答面板启动); 水箱水量满 →广播「桶满提醒」(桶变色、加积分);- 答题结束 →
广播「结算」(展示总积分、可兑换绿植数量)。
这样每个角色只关心自己收到的广播,后期加功能(如「天气切换」)不会牵一发而动全身。
四、积木拆解(关键片段示意)
下面用「伪积木」描述雨滴克隆体的下落与入桶判定,便于照着拖:
text
当作为克隆体启动时
将 [速度 v] 设为 (在 1 到 3 间随机选一个数)
重复执行
将 y 坐标 增加 (-1 × 速度 v)
如果 <(y 坐标) < (桶口高度)> 那么
将 [水箱水量] 增加 (1)
删除此克隆体
结束
如果 <(y 坐标) < (地面高度)> 那么
删除此克隆体
结束
结束
问答判定可抽象为:
text
当接收到 [开始答题]
将 [当前题号] 设为 (1)
重复执行 直到 <(当前题号) > (题目库 的长度)>
出题 (当前题号)
等待 直到 <(已答[当前题号]) = (1)>
将 [当前题号] 增加 (1)
结束
广播 [结算]
五、运行效果
- 画面顶部雨云来回飘,雨滴持续落入集雨桶,水位条稳步上升;
- 桶满时变红提示并奖励积分,避免「溢出浪费」的科普点;
- 侧边问答面板轮流出题,答对加分、答错给解析,节奏紧凑;
- 积分攒到阈值可「兑换绿植」,绿植长大带来成就感;
- 全程运行稳定、无卡死,符合赛项「程序技术」评分项中「运行流畅、结构清晰」的要求。

六、进阶挑战
想让作品在赛项里更出彩,可以再加这几层:
- 天气系统 :用变量
天气切换「晴 / 小雨 / 暴雨」,暴雨时雨滴更密、水量涨得更快,锻炼「变量 + 条件」的组合运用。 - 多桶分区:教学楼、操场、花园各放一个集雨桶,用列表分别记录各区水量,练习「列表 + 遍历」。
- 数据可视化:把一周收集的雨水量存进列表,用柱状图角色画出「每周节水柱状图」,呼应科学探索类的「现实模拟」。
- 积分公式仿真:想提前估算一学期能省多少水?可以用下面这段小程序快速验算「每日集雨量 × 天数」的累计效果:
python
# 进阶:估算一学期校园雨水回收量(示意)
daily_water = 100 # 每天集满 100 升
days = 90 # 一学期约 90 个下雨天
total = daily_water * days
print(f"一学期可收集雨水约 {total} 升,约合 {total/1000:.1f} 吨")
# 若 1 吨水 ≈ 3 元,可省水费:
print(f"折算水费约 {total/1000*3:.1f} 元")
把这段「计算思维」写进作品说明,能明显提升「创意构思」与「科学探索」两项得分。
七、小结与互动
今天我们拆解了「校园雨水收集站」:用克隆体 做雨滴、变量 管水量与积分、列表 存题库、循环 + 条件 驱动下落与判定、自制积木 封装重复动作、广播解耦各模块。整套积木结构清晰、贴近生活,正好命中杭州市中小学科学与工程大赛创意编程赛项「原创、实用、跨学科」的评审取向。
互动时间:如果你是参赛选手,会把这个项目做成「科学探索类」还是「互动游戏类」?你最想加哪个进阶功能?欢迎在评论区聊聊你的创意,也可以说说你所在的城市今年有哪些图形化编程比赛,我们一起避坑、一起冲奖!
原创文章,转载请注明出处。关注我,每日更新一篇少儿编程比赛真题解析与图形化项目拆解。
📚 免费少儿编程资料(夸克网盘领取)
以下资料来自夸克网盘分享,点击链接可直接保存;若需在 App 内打开,也可复制下方明文链接:
- 全国青少年信息素养大赛复赛集训题目Python&C++.docx
https://pan.quark.cn/s/93995d3cb150 - 2024信息素养-智能算法应用挑战赛-复赛初中组题目7月7日.pdf
https://pan.quark.cn/s/da97b5dbf75d - Python背记手册.pdf
https://pan.quark.cn/s/7568ae9ca92b - Python课程
https://pan.quark.cn/s/a94bf02d00c6 - 2024信息素养大赛图形化复赛集训题答案3-9
https://pan.quark.cn/s/6ccab7ec3cbc - 2025年03月份电子学会考级真题
https://pan.quark.cn/s/4403c4228912 - 2025全国青少年信息素养大赛赛项说明
https://pan.quark.cn/s/d9d0df4a9f29 - 青少儿信息素养大赛编程资料
https://pan.quark.cn/s/4ab6bd83be8a
资料持续更新,关注获取最新分享。