给孩子一个 8×4 的格子,点一点就能谱曲------这不是音乐课,是一节把「列表、循环、条件、广播」全串起来的图形化编程实战。本文用原创项目带娃吃透核心积木,并给出可迁移到各类创意编程比赛的进阶思路。

一、项目目标:做一个能"演奏"的编曲台
参加创意编程类比赛(如面向数字化创新应用的白名单赛事,软件编程作品通常被纳入创意设计类)时,最怕选题"看起来酷、做起来空"。我们把目标定得小而完整:
- 舞台上有一块 4 小节 × 8 拍 的网格(共 32 格),每列代表一拍,每一行代表一个音高;
- 孩子点击格子就点亮/熄灭该音,相当于"写"下一个音符;
- 点 ▶ 播放,程序按从左到右、从上到下的顺序把点亮的音依次奏出来,形成一段循环旋律;
- 提供 ⏹ 停止 / 🎲 随机 / 🧹 清空 三个按钮,方便反复试听与创作;
- 用 速度滑块(变量) 控制快慢,节奏感立现。
这样一个项目,既"看得见作品",又把比赛最常考的积木一次性练全,评委一眼能看懂你用了哪些能力。
二、核心考点清单(比赛评分就盯这些)
| 考点 | 在本项目里的落点 |
|---|---|
| 列表(List) | 用 grid 存 32 格的 0/1 状态;用 notes 存每一行对应的音名/频率 |
| 循环(Loop) | 播放时"重复 总拍数 次"逐拍扫描;随机生成时遍历所有格子 |
| 条件(If) | 当前格为 1 才发声;点击时判断越界;速度为 0 时兜底 |
| 变量(Variable) | 当前拍、速度、总行数、总列数、是否播放中 |
| 自制积木(My Block) | 把"奏一个音"封装成积木,传入音名即可复用,避免堆重复脚本 |
| 广播(Broadcast) | 按钮角色发 播放/停止/随机/清空 广播,主程序解耦响应 |
小技巧:评委看作品时,最加分的是"同一个能力用对地方"。比如列表不只用来存,还用来"查表映射音高",这比单纯堆循环更有设计感。
三、解法拆解:从数据模型到演奏
1. 搭数据:两个列表就够了
别一上来画舞台。先想清楚"旋律"在程序里长什么样:
grid(长度 32):初始全为 0;点亮的格子置 1。notes(长度 4):从低到高放 4 个音,例如do / mi / sol /高do,也可直接存频率数。
只要这两个列表在,后面的"点亮、播放、随机"全是围绕它们转。
2. 交互:点击格子 = 翻转状态
给网格角色写"当角色被点击":
- 用
鼠标 x / y反推当前点在第几列、第几行; - 算出
下标 = 行 × 总列数 + 列; - 如果
grid[下标] = 0就改成 1 并切换"亮"造型,否则改回 0 切"暗"造型。
这样点击即编辑,孩子能边点边听,创作门槛极低。
3. 演奏:广播驱动 + 逐拍扫描
主程序监听广播,核心是一段"顺序扫描"逻辑:
当接收到 [播放]
设置 [是否播放中 v] = 1
重复执行 (总列数) 次
设置 [当前拍 v] = (当前拍) + 1
重复执行 (总行数) 次
如果 <(grid[行×总列数+当前拍]) = 1> 那么
奏音符 (notes[行])
结束
结束
等待 (60 / 速度) 秒
结束
设置 [是否播放中 v] = 0
这里
等待 (60 / 速度)是节奏的关键:速度越大、间隔越短,旋律越快。一个除法就把"听音乐"和"学数学"连起来了。
4. 自制积木:把"奏一个音"封起来
新建自制积木 奏音符 (音名):
- 内部用"播放音符 __ 秒"积木,音名由参数决定;
- 好处:随机生成、手动点击试听、正式播放三处都能直接调用,脚本不重复、好维护。
5. 三个按钮:全靠广播解耦
- ⏹ 停止:设
是否播放中 = 0,循环里的"如果 是否播放中 = 1"条件不满足即停; - 🎲 随机:遍历 32 格,每格
在 0 到 1 间取随机数,约 35% 概率置 1,瞬间生成一段新旋律; - 🧹 清空:把
grid全部设为 0,造型切回"暗"。
按钮角色只管"发广播",主程序只管"收广播干活",职责分离是评委眼里成熟作品的特征。
6. 对照参考(Python 伪代码,帮助跨语言理解)
如果娃同时在学代码,下面这段和上面的积木逻辑一一对应:
python
def play(grid, notes, rows, cols, bpm):
beat = 60.0 / bpm # 每拍间隔(秒)
for c in range(cols): # 逐拍
for r in range(rows): # 逐行
idx = r * cols + c
if grid[idx] == 1:
beep(notes[r]) # 对应自制积木"奏音符"
time.sleep(beat)
核心思想完全一样:两层循环扫描网格 + 条件发声 + 速度决定间隔。
四、运行效果(孩子能讲给评委听的)
- 打开作品,默认一片空白网格;
- 点出 4 个格子组成"do---sol---sol---do"的简单动机,点播放,听到清脆的循环旋律;
- 拖速度滑块从 60 拉到 120,同一段旋律立刻"活泼"起来;
- 点 🎲 随机,每次都是不同的 8 拍小品,孩子会自然地开始"挑最好听的那段保存"------这就是创作。
五、进阶:从"能响"到"像样作品"
- 和弦:一行里允许同时点亮多个音,"奏音符"改成"奏和弦",立体感马上出来;
- 录制回放 :把每次点亮的
grid快照再存进一个"曲库"列表,可切换多段旋律; - 旋律转五线谱:播放时用"图章/画笔"把亮格画成小圆点,天然就是一张节奏图;
- 接麦克风/体感:进阶赛事可让"拍手触发播放",把图形化作品和硬件/AI 结合,冲击更高奖项;
- 主题包装:给编曲台套一个"给妈妈写生日歌""校园课间铃"的情境,故事性更强,评委更爱。
六、小结与互动
这一个"音乐编曲台",把列表(存状态)、循环(扫描)、条件(判断)、变量(速度/拍数)、自制积木(奏音复用)、广播(按钮解耦) 六块核心能力串成一件能听、能玩、能改的作品。备赛时与其背积木,不如带着孩子做这样一个"小但完整"的项目------评委看到的不是功能堆砌,而是真正用编程解决问题的思路。
你带孩子做过哪些"一听就懂"的图形化小项目?是节拍器、计算器,还是会讲故事的动画?欢迎在评论区聊聊,我整理一份「创意编程比赛高频考点项目清单」给大家。
本文为少儿编程系列原创,聚焦图形化项目拆解与比赛考点。更多赛事资讯与项目思路,关注持续更新。
📚 免费少儿编程资料(夸克网盘领取)
以下资料来自夸克网盘分享,点击链接可直接保存;若需在 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
资料持续更新,关注获取最新分享。