My Blocks 自定义积木
My Blocks = 自己定义的积木(其他语言叫"函数")。把重复的积木序列打包成一块,带参数复用。这是区分新手队和成熟队的第一道门槛。
为什么需要
没有 My Blocks 的比赛程序:每个任务都复制一遍"初始化 + 直行 + 转弯"积木,改一个速度要翻十个地方。 有 My Blocks 的比赛程序:初始化 直行 [50] cm 右转 [90] 度 三种积木拼来拼去,改逻辑只改定义处一次。
创建 My Block
- 在积木栏最下面找到 My Blocks,点"制作新积木"。
- 起名,比如
直行。 - 点"添加输入项"加参数:数字/文字输入、布尔输入、标签文字。比如加一个数字输入
距离cm。 - 确定后画布上出现粉色的定义帽子积木,把实现挂在下面。
必做的三个 My Blocks
1. 初始化
定义 初始化
设置移动马达 [A+E]
设置移动速度 [50] %
设置 1 圈移动距离 [17.5] cm
重设偏航角 [0]2. 直行(带距离参数)
定义 直行 (距离cm)
移动 [前进] (距离cm) cm先做简单版;学完陀螺仪直行后,把实现升级成陀螺仪纠偏版——调用处一个都不用改,这就是封装的价值。
3. 陀螺仪转弯(带角度参数)
定义 转弯 (角度)
重设偏航角 [0]
如果 <(角度) > [0]> 那么
开始移动 [转向 100]
等待到 <偏航角 > ((角度) - [2])>
否则
开始移动 [转向 -100]
等待到 <偏航角 < ((角度) + [2])>
停止移动正角度右转、负角度左转,一块积木搞定所有转弯。
用起来
比赛任务程序变成这样,一眼能读懂:
当程序启动时
初始化
直行 [40]
转弯 [90]
直行 [25]
马达 [C] 转动 [顺时针] [180] 度 ← 附件动作
转弯 [-45]
直行 [-30] ← 负数=后退,如果你的直行实现支持设计原则
- 一个 My Block 做一件事:直行就是直行,不要顺便抬机械臂。
- 参数化会变的量:距离、角度、速度做成参数;不变的(端口号)写死在定义里。
- 全队统一用同一套 My Blocks:A 写的任务和 B 写的任务用同一块"直行",行为才一致。
练习
- 把你之前所有练习程序的开头段落抽成"初始化"。
- 做一个
走正方形 (边长cm):内部调用"直行"和"转弯"各 4 次——My Block 里可以调用其他 My Block。
下一课:巡线。