前言

有不少开发者来信问,如何从Scratch3.0的积木中生成Python代码。

我此前在wwj718/blockly_dev scratch-blocks_hello_world项目中给出了示例。

思路

思路很简单,Scratch3.0的积木(scratch-blocks)基于Blockly, 所以它拥有Blockly积木的功能,Blockly积木可以生成代码,官方文档在这里写得很清晰: Blockly Generating Code.

Python是Blockly原生支持的语言之一。对于许多通用的积木(如if/while/math)直接引用python_compressed.js 就可以直接生成相应代码,对于Scratch自定义的积木,则需要自定义相应的代码,自定义的策略,我在wwj718/blockly_dev scratch-blocks_hello_world里已经给出例子。

混用代码和积木是有风险的,你可能要为此引入很多"智能"的check来防止错误的产生,可能还会把用户搞得一头雾水。慎用。关于这部分的讨论,参考我之前的文章: 两种硬件编程风格的比较

Scratch3.0与Python

Scratch3.0和Python同为少儿编程领域的重点,如何连接它们,彼此增强,CodeLab在codelab-adapter中做了不少有趣的探索:

参考