大家好,我是宝弟!
今天给大家推荐一个基于WPF开发,类似于Scratch的可视化编程编辑器WPF-Blockly。WPF-Blockly由WPF和dotnet实现。与现有工具相比,可视化脚本更像是真实代码,并且具有更多的编程功能。使用此工具,您可以简单地使用可视化代码编辑器启用应用程序并运行可视化代码。
WPF-Blockly支持所有语法,包括模块编程和面向对象编程,也支持自定义语法,是图形化脚本的集成开发环境(IDE).
先看效果
现在实现了以下功能
-
带参数和返回值的函数
-
递归函数
-
变量和变量范围(局部变量)
-
运算符,包括 +、-、、/、%&、|、^、>>、<<、++、--, &&、||、!、+=、-=、=、/=、&=、|=、^=、>>=、<<=
-
支持 if else, for, while, do while and case statement
-
循环流控制,包括中断、继续和返回
-
最后尝试捕获,异常处理
-
数组
-
支持字符串操作
-
支持堆栈、队列、字典、列表和二叉树
-
支持声音合成
-
支持翻译
-
支持canvas绘制,类似于python turtle
除了编程功能外,该工具还具有以下功能
-
执行步骤亮点
-
错误位置突出显示
-
脚本序列化和反序列化
-
编写自己的类实例
-
将图形脚本编辑器添加到窗口中
-
设置图形脚本编辑器的新工具栏
-
为每个表达式和语句注册颜色
-
使用 Serialization.Load 和 Serialization.Save 方法从中加载脚本并将脚本保存到文件或流
要编写自己的表达式和语句,必须继承 Expression 或 Statement 类,重写描述符或 BlockDescriptor 以自定义类的外观。
表达式的描述符
-
TextItemDescriptor - 显示的文本(用于突出显示关键字的 IsKeyword 属性)
-
表达式描述符 - 用于用户输入或将表达式拖到此处的文本框
-
参数描述符 - 函数的参数,用户可以将此变量拖动到其他位置
-
变量声明说明 - 变量声明,用户可以将此变量拖动到其他位置
-
StringInputDesciptor - 用于用户输入单行文本的文本框
-
MultiLineStringInputDesciptor - 用于用户输入多行文本的文本框
-
选择项描述符 - 组合框,用于显示多个变量以供用户选择
-
图像项描述符 - 在表达式中显示图像
有些语句只有一行,语句的显示与表达式相同,因此您仅对语句使用描述符。描述符的定义与表达式相同,在 BlockDescriptor 中什么都不写。
对于一些复杂的语句,如if-else,while语句,这些语句有几个BlockStatement和几个表达式,你必须自定义BlockDescriptor。
-
TextBlockStatementDescritor - 语句行中显示的文本
-
表达式语句说明 - 在语句中显示表达式
-
块语句描述符 - 块语句位置
对于示例,if-else 语句包含以下 BlockDescriptor,
-
if - 用于 if 的 TextItemDescriptor 和用于测试的表达式描述符
-
BlockStatementDescriptor for consequent BlockStatement(英语:BlockStatement)
-
else - TextItemDescriptor for else
-
BlockStatementInhibitorDescriptor for Alternate BlockStatement(英语:BlockStatement)
重写 ExecuteImpl 函数,以编写表达式和语句的执行。要执行其他表达式和语句,只需调用 Execute 函数。ExecutionEnvironment 存储变量的所有值,可以在环境中注册变量。
-
1 - 基本执行环境存储所有全局变量和函数
-
2 - 类环境,存储每个类的静态变量
-
3 - 实例环境,存储类的每个实例的所有非静态变量
-
4 - 函数环境,存储函数局部变量的变量
-
5或更多 - 存储每个块语句的局部变量
资源获取方式
https://gitee.com/weihuajiang/WPF-Blockly