跳到主要内容

My Blocks 自定义积木

My Blocks = 自己定义的积木(其他语言叫"函数")。把重复的积木序列打包成一块,带参数复用。这是区分新手队和成熟队的第一道门槛。

为什么需要

没有 My Blocks 的比赛程序:每个任务都复制一遍"初始化 + 直行 + 转弯"积木,改一个速度要翻十个地方。 有 My Blocks 的比赛程序:初始化 直行 [50] cm 右转 [90] 度 三种积木拼来拼去,改逻辑只改定义处一次。

创建 My Block

  1. 在积木栏最下面找到 My Blocks,点"制作新积木"。
  2. 起名,比如 直行
  3. 点"添加输入项"加参数:数字/文字输入、布尔输入、标签文字。比如加一个数字输入 距离cm
  4. 确定后画布上出现粉色的定义帽子积木,把实现挂在下面。

必做的三个 My Blocks

1. 初始化

wordblocks
定义 初始化
设置移动马达 [A+E]
设置移动速度 [50] %
设置 1 圈移动距离 [17.5] cm
重设偏航角 [0]

2. 直行(带距离参数)

wordblocks
定义 直行 (距离cm)
移动 [前进] (距离cm) cm

先做简单版;学完陀螺仪直行后,把实现升级成陀螺仪纠偏版——调用处一个都不用改,这就是封装的价值。

3. 陀螺仪转弯(带角度参数)

wordblocks
定义 转弯 (角度)
重设偏航角 [0]
如果 <(角度) > [0]> 那么
  开始移动 [转向 100]
  等待到 <偏航角 > ((角度) - [2])>
否则
  开始移动 [转向 -100]
  等待到 <偏航角 < ((角度) + [2])>
停止移动

正角度右转、负角度左转,一块积木搞定所有转弯。

用起来

比赛任务程序变成这样,一眼能读懂:

wordblocks
当程序启动时
初始化
直行 [40]
转弯 [90]
直行 [25]
马达 [C] 转动 [顺时针] [180]← 附件动作
转弯 [-45]
直行 [-30]                          ← 想让负数=后退,定义里要按正负切换移动方向(见陀螺仪课的警告)

设计原则

  • 一个 My Block 做一件事:直行就是直行,不要顺便抬机械臂。
  • 参数化会变的量:距离、角度、速度做成参数;不变的(端口号)写死在定义里。
  • 全队统一用同一套 My Blocks:A 写的任务和 B 写的任务用同一块"直行",行为才一致。

My Blocks 没有返回值

Word Blocks 的自定义积木不能"算出一个值还给你"。需要返回值的逻辑(比如"读传感器取平均")用变量传递,或者升级到 Python 用真函数。

练习

  1. 把你之前所有练习程序的开头段落抽成"初始化"。
  2. 做一个 走正方形 (边长cm):内部调用"直行"和"转弯"各 4 次——My Block 里可以调用其他 My Block。

下一课:巡线

© 2026 FLL 知识库 · 保留所有权利