Kittenblock下Python的舞台编程和API

大家好,我是传说中的程序猿,平时不吃饭,不睡觉,靠码代码和咖啡为生。。。好,收到产品汪的板砖一块,不卖惨人设了(谁让我是来自不卖萌会shi星球的R星喵)~下面来点正经的:

Kittenblock下Python已经加进来有一段时间了,但是由于平时一直跟着MIT更新重构各个模块的代码或者被CC喵追杀着改Bug,这里非常抱歉这么久都没一篇像样的文档介绍舞台Python。

Kittenblock内实际上有两个Python编辑窗口,一个是在左侧代码区通过切换标签栏"Python"切换,我们称之为"舞台Python"

另外一个是当你切换硬件为Robot:bit在右侧代码区出现的代码框,这个实际上是microPython编辑区。

顾名思义"舞台Python"工作于Kittenblock内部,用于控制舞台上精灵角色和背景;而microPython则在Microbit主板上执行,Kittenblock只负责将microPython编译成hex并下载到Micro:bit主板上。

首先,Kittenblock内置的python运行环境是Python3.5,需要注意的是Python3和2有一些语法上的差异可能会导致程序报错。

我们先看一个最简单的例子:

第一行是导入Scratch3的类文件(最后我们贴上了这个文件的源代码)

第二行是实例化一个精灵对象,其中Sprite1是精灵的名字,可以在舞台下方的精灵列表中找到对应的名字

第二个参数是和Scratch3通信用的接口,这个接口在1.59版本后加入,如果跟硬件通信这个接口会不一样,目前只要填stage就行了。

第三行是让精灵干什么,这里我们让他向前移动100像素,之后点击就可以让Python运行了,注意Python运行环境初始化可能有一些延时,不过代码一旦跑起来跟舞台的交互是实时的。

接下来我们看看如何让精灵不停旋转。

我们这里使用了Python系统时间库time,所有Python3.5的系统库都可以使用类似的方法进行导入使用。

点击蓝箭头后会发现精灵不停的在旋转,这时候我们只需要再点击一下就可以停止程序执行。

舞台Python除了可以控制精灵也可以返回精灵当前的一些状态,例如:

可以看到小喵说出了自己的方向

Kittenblock本身支持保存舞台Python的代码,只需要您将Python执行一次,软件发现代码没bug在保存文件的时候会将代码保存在Json文件内,读取的时候也会自动加载。

目前‘动作’、‘外观’、‘声音’、‘画笔’对应的方块都有对应的Python API,变量、运算符和逻辑等等请使用Python原生的。

接下来列出图块和对应的Python代码:

cat.move(10)

cat.turnRight(15)

cat.turnLeft(15)

cat.direction(90)

cat.gotoXY(0,0)

cat.glideXY(0,0,1)

cat.setX(10)

cat.changeX(10)

类似Y轴

cat.setY(10)

cat.changeY(10)

坐标读取:

cat.xPosition()

我们可以用 print(cat.xPosition()) 在调试框中打印小猫的坐标

cat.direction()

注意方向读取和设置是一个函数,就看有么有设置参数。

外观模块

cat.say("Hello!", 2)

cat.show()

cat.hide()

cat.switchCostume('costume1')

造型的名字可以去‘角色栏查看’

背景类似:

cat.nextCostume()

cat.nextBackground()

cat.switchBackground('backdrop1')

cat.changeEffect('color', 10)

cat.setEffect('color', 10)

cat.clearEffect()

特效名字可以点击方块的下拉菜单查看

cat.changeSize(10)

cat.setSize(100)

声音模块

cat.playSound('meow')

同理,请到声音栏查看精灵具有的声音名字

cat.stopAll()

cat.changeSoundEffect('pitch', 10)

cat.setSoundEffect('pitch', 10)

cat.clearSoundEffect()

cat.changeVolume(-10)

cat.setVolume(100)

cat.volume()

画笔模块

注意:MIT在Scratch3将画笔变成扩展件,需要先在左下角添加扩展插件导入画笔才能使用

cat.clear()

cat.stamp()

cat.penDown()

cat.penUp()

cat.setColor('#FF5500')

设置颜色使用HEX RGB表示

cat.changeColor(10)

cat.setColor(50)

cat.changePenSize(1)

cat.penSize(1)

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20171211G0NFOA00?refer=cp_1026

扫码关注云+社区