之前开始整理机甲的Python API,但纸上得来终觉浅,而且发现有些API与即使官方qq群的教程文档也有少许出入,于是打算逐个测试。这一系列将附上真机运行视频,以便以后直观看到最终演示效果。

先从灯效部分API开始。此文的API测试如下(友情提示,有背景音请关音箱):

在线视频演示

Python完整例程如下:

def start():
    次数 = 0
    while 次数 < 3:
        LED灯.枪亮()
        time.sleep(1)
        LED灯.枪暗()
        time.sleep(1)
        次数 += 1

# 以下为API中文化部分, 与程序逻辑无关. 请勿作修改.
LED灯 = led_ctrl
LED灯.枪亮 = LED灯.gun_led_on
LED灯.枪暗 = LED灯.gun_led_off

在之前API中文化初尝试已经验证过中文化的可行性,之后的一系列例程也体现了相对于英文API的优势。因此这一系列也会将API逐个中文化。

测试该API时,意识到枪亮本身并不是阻塞型的(大多数未做特别说明的机甲API 应该都是),因此如果像这个例子,在运行枪亮后程序自然结束,枪仍会亮几秒(应该是程序结束之前的延时)但不会更久。

命名上,一个简单省力的办法是采用与官方Scratch中文环境相同的名称,比如这里两个方法在Scratch的命名是”开启/关闭弹道灯“,但一方面Python的英文API是gun_led_on/off ,个人感觉更口语化,一方面没有看到类似使用“弹道“这一命名的其他Scratch API,并非重复使用的术语。

因此暂且不拘泥于与官方Scratch中文API一致的命名,而是以个人理解为主决定命名风格。比如这里比较口语化的”枪“,而且LED灯这一类别已经明确了这是灯效,因此在方法命名中不需突出”灯“。

另外,是”亮枪“还是”枪亮“,在这里因为”亮枪“有歧义,后者有些优势。另外,现在似乎没有针对自定义标识符的自动补全功能,待机甲IDE支持后,可能会先对第一个字进行匹配(虽然很多其他IDE的自动补全已经支持了中间字符串的匹配),因此暂时将重用的术语(这里是”枪“)置于前部。

当然命名用词大有推敲空间,欢迎意见建议。今后也会在API中文化过程中逐渐调整修正之前的命名。