模拟Scratch的可视化脚本编辑器(一)

简介

儿童编程学习工具Scratch最先由麻省理工学院2007年就推出,目前谷歌正在与麻省理工合作开发下一代Scratch。
在这里插入图片描述
由于喜欢Scratch的可视化脚本编辑方式,于是决定模拟做一个更为通用化的脚本编辑模块,不仅仅用于儿童编辑学习,可以通过定制变成各种类型脚本编辑工具。
下面就介绍一下笔者开发的轻量级脚本编辑模块yuchang(鱼肠)(基于Vue2, github地址: https://github.com/guobinnew/yuchang),支持Block的灵活扩展,模型加载和保存,以及脚本导出等功能

Demo

为了测试功能,开发了一个Demo应用,其界面如下所示:
在这里插入图片描述

可视化脚本编辑模块主要在外观表现上照搬Scratch,而在设计与功能实现上主要区别:

  1. 编辑模块的设计目标是一个通用的脚本编辑管理容器,不专门面向某个特定应用,可编辑的脚本Block能够完全根据规范进行定制扩展;
  2. 目前不包含执行引擎,出于通用性目的考虑,如果带上引擎的话,就会带来很多使用限制;

Block定义格式

Block定义文件位于项目目录/client/src/scratch/blockDefs/packages目录下。Block按包(package)进行管理,
每个包为一个独立目录,其中base目录为基础Block,其余目录为扩展Block。

类目定义

每个Block指定一个类目,类目目前主要用来定义颜色属性,类目定义文件位于项目目录/client/src/scratch/blockDefs/categories.js
,可以自行进行扩展。

类目定义格式为:

  {
    'internal': {   // 类目ID
      name: '内部',  // 名称
      display: 'none',  // 是否可见
      state: {
        background: {   // 背景颜色定义
          stroke: '#000000',
          fill: '#000000',
          opacity: '0.2'
        }
      }
    }
  }

Block类型

Block具有一个Type属性,用来表示Block具备什么样的行为。目前Type 主要分为:

  • Action(动作)
  • Express(表达式)
  • Control (控制)
  • Variant (变量) 不能带参数,只有一个变量名描述
  • Event (事件)
  • Markter (标记)主要供内部使用

Block外观类型

Block具有一个可见的外观图形,目前主要有7种:

  • cap 能用于Event

在这里插入图片描述

  • hat 能用于Event
    在这里插入图片描述

  • slot 能用于Action
    在这里插入图片描述

  • round 能用于Variant,Express
    在这里插入图片描述

  • diamond 能用于Variant,Express
    在这里插入图片描述

  • cup 能用于Control

在这里插入图片描述

  • cuptwo 能用于Control

在这里插入图片描述

Block定义

每个包目录导出一个Block数组,数组的每个元素为一个完整的Block定义。
Block 对象的定义格式如下:

 {
    id: 'move',    // ID
    shape: 'slot',   // 图形形状
    category: 'motion',  // 类目
    draggable: true,  // 是否可拖动
    state: {  // 状态定义
      data: {  // 数据项定义
        sections: [  // 每个数据单元为一个section
          {
            type: 'text',  //  Text section类型
            text: '移动'  // 显示的文字
          },
          {
            type: 'argument',  // 可输入的参数 section
            datatype: 'number',  // 数据类型,分为string, number, boolean, enum
            data: {
              value: 1  // 参数值
            }
          },
          {
            type: 'text',
            text: '步'
          }
        ]
      }
    }

其中Sections数组用来描述Block的参数列表,参数分为可编辑和不可编辑。
不可编辑类型为 Text——文字
可编辑参数类型为String、Number、Boolean和Enum

自行扩展Block

中文诗歌
在这里插入图片描述

机器学习Keras
在这里插入图片描述

    from keras.models import Sequential
    from keras.layers.core import Dense, Activation
    model = Sequential()
    model.add(Dense(128, input_shape=(16,)))
    model.add(Activation('relu'))
    model.add(Dense(128))
    model.add(Activation('relu'))
    model.add(Dense(10))
    model.add(Activation('softmax'))
    model.summary()

MarkDown流程图
在这里插入图片描述

   st8=>start: 开始:> https://www.baidu.com
   op9=>operation: 程序
   c10=>condition: 条件
   op11=>operation: 程序
   e12=>end: 结束
   op13=>operation: 程序
   op14=>operation: 程序
   st8->op9(bottom)->c10
   c10(no)->op14(bottom)->op11
   c10(yes, right)->op13(bottom)->op11
   op11(bottom)->e12

Demo运行步骤

  • (1)安装Node环境,全局安装Vue-CLI
  • (2)从Github Clone本项目源码
  • (3)在项目根目录运行 npm install, 在client/目录下运行npm install
  • (4) 在控制台运行Vue ui,选择项目目录为client/目录,通过UI控制台运行服务即可
  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
彩纸屋是全国首家提供scratch开源定制和少儿编程培训管理系统源代码的服务商,彩纸屋提供的scratch培训管理系统可开源定制,方便用户二次开发,公司服务客户遍布全国各地,旗下方格侠系统可进行在线演示操作。 少儿编程源码特点: 一、基于scratch3.0的少儿编程在线模式,开启在线教学获客方式,体验有温度、有人情味的系统,解决编程培训机构线上业务的需求。 二、基于scratch3.0版本开发,平台采用THINKPHP5、VUE.js相结合 线上线下相互引流的新零售模式。通过大数据技术、人工智能技术,定制界面设计达到完美结合。为客户打造不一样的风格,转化的每一个核心技术环节。 三、创新、丰富的商业系统。彩纸屋编程系统为培训企业提供一站式服务,从全终端建站到全网推广。给你最新体验!创新的商业模式,功能多,覆盖广。 四、性价比高,从全终端、全能型网站,尽在掌握。 五、家校沟通,作业作品实时批改推送,手机端PC端同步编程,引流、互动、营销一步到位。方便管理层,加快成交进度 六、应用范围广。专注于培训机构营销、平台之间的合作,支持网络多加公司,多人联网系统工作,更高效,更快捷。 七、权限分配和角色管理。灵活设置每一位成员的权限,角色不同分配管理层面。与各个角色无缝对接,获取海量用户,迅速进入盈利阶段。 八、移动端应用。深入行业解决方案,精准化营销,成为营销创新者! 方便快捷查询管理,想改就改,让您随心掌握。 少儿编程源码环境推荐: > php5.5+ > mysql 5.6+ > 打开服务器 常见问题: 1、开源可定制是什么意思 软件代码开放,懂技术的可以自己调整或者新增功能,如果自己对技术不太懂可以联系我们公司给您定制您需要的功能 2、彩纸屋如何安装 解压压缩包后有一个名为彩纸屋的文件夹,打开文件夹中的本地环境部署详细说明,里面有详细的安装步骤。 更新: 1、新增岗位权限分配 2、新增python编辑器跳转 3、学生端作品列表分类

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值