scratch2或scratch3的作品能通过Python编程自动生成吗?答案是肯定的,因为它的作品文件是一个压缩包,你把它解压后,分析它解压后的文件就能得出结论。对于一些简单的作品,如只是切换造型的,那可以通过Python编程读取gif文件,拆帧等操作,形成json文件,最后用zip打包,再改名或者连名都不要改,scratch2或scratch3就能自动加载。以下是一个函数,它能形成.sprite2角色文件!展示的是核心代码,基本原理都清楚了,其它的就要靠你自己了!

def make_scratch2_sprite(path,size):

"""生成scrach2.0角色,它的脚本只是不断地换造型"""

sprite = {} # 代表一个角色,这个角色有名称,声音列表,造型列表

sprite['objName'] = "sprite1"

sprite['scripts'] = [[131, 202, [["whenGreenFlag"], ["gotoX:y:", 0, 0],["doForever", [["wait:elapsed:from:", 0.2], ["nextCostume"]]]]]]

costumes_list = [] # 造型列表

md5_file_list = [] # md5值 图形文件列表

# 形成每个png文件的由md5值文件名

for filename in os.listdir(path):

md5 = GetFileMd5(path + os.sep + filename)

md5_file_list.append(md5 + ".png")

amounts = len(md5_file_list)

# 下面的代码是形成角色的造型列表

for index in range(1,amounts+1):

costume = {} # 一个造型

costume['costumeName'] = "shape" + str(index) # 造型名称

costume['baseLayerID'] = index-1 # 造型编号

costume['baseLayerMD5'] = md5_file_list[index-1]# MD5值文件名

costume['bitmapResolution'] = 2 # 位图 2

costume['rotationCenterX'] = size[0]//2 # x旋转中心

costume['rotationCenterY'] = size[1]//2 # y旋转中心

costumes_list.append(costume) # 添加一个造型到列表

sprite['costumes'] = costumes_list

sprite['currentCostumeIndex'] = 0

sprite['scratchX'] = 0

sprite['scratchY'] = 0

sprite['scale'] = 2

sprite['direction'] = 90

sprite['rotationStyle'] = "normal"

sprite['isDraggable'] = False

sprite['indexInLibrary'] = 100000

sprite['visible'] = True

sprite['spriteInfo'] = {"url":"www.scratch8.net"}

# 把sprite字典转换成json格式,写入文件

json_string = json.dumps(sprite)

f = open(path + os.sep + "sprite.json",mode='w')

f.write(json_string)

f.close()

os.chdir(path)

# 下面开始压缩图片和json档

with zipfile.ZipFile( 'sprite.sprite2', mode='w') as zipf:

for filename in os.listdir():

ext = os.path.splitext(filename)[-1]

if ext != ".sprite2":

zipf.write(filename)

zipf.close()

scratch python_自动生成scratch2或scratch3作品核心代码相关推荐

  1. 根据Word表格自动生成SQL数据库脚本的VBScript代码

    这是几年前写的根据Word表格自动生成SQL数据库脚本的VBScript代码,最近修改了下(原来只支持单个Word表格)使其支持一个Word文档中的多个表格,生成的SQL文件名以Word文件名+.SQ ...

  2. dump java崩溃自动 不生成_GitHub 自动生成 .gitignore,只想写代码不重要的事情别烦我...

    代码上传 GitHub 为何半途而废?因为只想写代码,readme 不想写,gitignore 不想管. readme 不想写已经有救了,我们发现了 readme 自动生成工具 你已经是个成熟的 Gi ...

  3. C代码工具--自动生成enum值和名字映射代码

    这年头好像继续做C语言的人不多了,年轻人大多去互联网和移动应用.确实,那两个领域现在来钱快,且总是供不应求.就说刚刚在一个旧同事的微信群里,有人刚放出自己有团队可以做App几分钟,哇塞,好几个人说有项 ...

  4. 利用Simulink、STM32CUBEMX、STM32-MAT/TARGET自动生成简单的led灯闪烁代码(保姆级教程)

    1.简介 这里利用基于STM32F103RCT6的一块自带led灯的开发板,首先通过STM32CUBEMX产生.ioc配置文件,其次对Simulink进行所必须的配置,然后利用Simulink的图形化 ...

  5. 一个自动生成web和微服务项目代码工具sponge

    sponge 是一个快速生成web和微服务项目代码工具,也是一个基于gin和grpc封装的微服务框架.sponge拥有丰富的生成代码命令,一共生成12种不同功能代码,这些功能代码可以组合成完整的服务( ...

  6. python自动生成鸡汤文_20行python代码实现鸡汤智能生成器

    "Don't think of the overwhelming majority of the impossible." "不要去想不可能之事" " ...

  7. Petapoco 连接oracle11g 自动生成poco时遇到的问题

    偶尔在园子里看到.net的轻量级ORM框架Petapoco的介绍,觉得很有趣.相关介绍:PetaPoco:适用于.NET的微型ORM 正好最近有个C#+Oracle11g的项目,想趁此机会试试用pet ...

  8. 使用Visual Studio宏来自动生成代码 [ Visual Studio | 宏 | 自动生成代码 ]

    前言 宏的定义:是组合到一起形成一个命令以自动完成某项任务的一系列命令和指令.(MSDN) 在使用Visual Studio宏实现JS折叠功能的时候就想过用它来实现代码自动生成,有了前面的基础,实现起 ...

  9. html自动生成工具_关于STM32代码自动生成的工具的进度....

    前情提要:STM32代码自动生成工具_本想...但是...可是...所以 首先说一下那几天大家的反应,有的持观望态度,毕竟STM32CUBE很香:有的很激动,期待我快点出东西:还有的很淡定,知道我在挖 ...

  10. 使用 Source Generator 自动生成 WEB API

    使用 Source Generator 自动生成 WEB API Intro 上次我们介绍了使用 Source Generator 的应用,有小伙伴留言说想要自动生成一套 ABP 相关的东西,我对 A ...

最新文章

  1. 转录组背景、环境设置(目录管理)
  2. mysql中自增auto_increment功能的相关设置及问题
  3. mysql经典总结文章_MySQL基础篇(01):经典实用查询案例,总结整理
  4. 推荐一本学习生信的好书,新手友好,实战性强
  5. [哀悼]5.12地震后把网站改成灰色的方法
  6. 恢复初始快捷键_CAD常用命令快捷键大全,47个快捷键50个CAD技巧,教你快速画图...
  7. vue.js 常用语法总结(一)
  8. 宇瞻筹划转型 标准型内存不再是重头产品
  9. 用户故事与敏捷方法—一些用户故事(实战二)
  10. 钉钉本地开发环境配置(H5微应用)
  11. 阴阳师夜刀神技能是什么
  12. MacBook外接显示器的显示模式介绍及设置说明(分屏/多屏)
  13. 软件架构C4模型简介
  14. 怎么设计制作简洁实用的App交互界面
  15. BGP公网成本节省50%秘笈,共享流量包、共享带宽包,便宜到阿里云快哭了
  16. 基于Tensorflow里CNN文本分类
  17. 用IDEA弹奏《起风了》伴奏音乐 Java语言 <源码分享> GitHub有趣的小项目
  18. 【MySQL】存储过程与存储函数
  19. 什么是VOIP-网络电话名词详解
  20. 电阻 电容 并联电路

热门文章

  1. php网站动态实例教程,PHP动态网站开发实例教程
  2. 计算机二级vfp程序语言,2012年计算机二级VFP语言基础学习教程
  3. Tapestry5.3使用总结
  4. 下载webpack依赖报错“Refusing to install package with name “webpack“ under a package”
  5. Protel 99 SE 如何导出BOM清单
  6. HTML5移动应用开发为什么需要引入前端工程化
  7. ELAS_ROS算法在KITTI数据集上生成稠密点云
  8. 蓝桥杯c语言本科试题,蓝桥杯c语言试题2015(3)
  9. c语言二级java难吗_计算机二级考JAVA还是C?
  10. samkoon触摸屏用什么软件编程_samdraw3.3软件下载