[KittenBlock] Kittenblock下学Python——舞台编程和对应API

riven 发表于 2018-4-9 01:13:43 来自手机 | 显示全部楼层 [复制链接]
3 3436
Kittenblock下Python已经加进来有一段时间了,但是由于平时一直跟着MIT更新重构各个模块的代码或者被@CC喵 追杀着改Bug,这里非常抱歉这么久都没一篇像样的文档介绍舞台Python。

今天特意介绍下(骄傲脸
Kittenblock内实际上有两个python编辑窗口:

一个是在左侧代码区通过切换标签栏‘python’切换,我们称之为‘舞台python’;
stage_python.png

另外一个是当你切换硬件为robotbit后,在右侧代码区出现的代码框,这个实际上是micropython编辑区。
micropython.png

它们之间的区别:
顾名思义‘舞台python’工作于Kittenblock内部,用于控制舞台上精灵角色和背景;而micropython则在microbit主板上执行,Kittenblock只负责将micropython编译成hex并下载到microbit主板上。




首先,Kittenblock内置的python运行环境是python3.5,需要注意的是python3和2有一些语法上的差异可能会导致程序报错。
我们先看一个最简单的例子
  1. from scratch3 import *
  2. cat = Sprite("Sprite1", stage)
  3. cat.move(100)
复制代码
第一行是导入scratch3的类文件(最后我们贴上了这个文件的源代码
第二行是实例化一个精灵对象
  • 其中Sprite1是精灵的名字,可以在舞台下方的精灵列表中找到对应的名字
spritename.png
  • 第二个参数是和Scratch3通信用的接口,这个接口在1.59版本后加入,跟硬件通信这个接口会不一样,目前只要填stage就行了。

第三行是让精灵干什么,这里我们让他向前移动100像素
之后点击 pythonrun.png 就可以让python运行了,注意python运行环境初始化可能有一些延时,不过代码一旦跑起来跟舞台的交互是实时的。
接下来我们看看如何让精灵不停旋转
  1. import time
  2. from scratch3 import *

  3. cat = Sprite("Sprite1", stage)
  4. while True:
  5.     time.sleep(0.1)
  6.     cat.turnLeft(5)
复制代码
我们这里使用了python系统时间库time,所有python3.5的系统库都可以使用类似的方法进行导入使用。
点击蓝箭头后会发现精灵不停的在旋转,这时候我们只需要再点击一下 pythonstop.png 就可以停止程序执行。
舞台python除了可以控制精灵也可以返回精灵当前的一些状态,例如:
  1. import time
  2. from scratch3 import *

  3. cat = Sprite("Sprite1", stage)
  4. cat.say("my direction ={}".format(cat.direction()))
复制代码
可以看到小喵说出了自己的方向
catdirection.png

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


目前‘动作’、‘外观’、‘声音’、‘画笔’对应的方块都有对应的python api,变量、运算符和逻辑等等请使用python原生的。
接下来列出图块和对应的python代码:
movestep.png
cat.move(10)
turnright.png
cat.turnRight(15)
turnleft.png
cat.turnLeft(15)
direction.png
cat.direction(90)
movexy.png
cat.gotoXY(0,0)
glidexy.png
cat.glideXY(0,0,1)
changex.png
cat.setX(10)
changex2.png
cat.changeX(10)
类似Y轴
cat.setY(10)

cat.changeY(10)
坐标读取:
xposition.png
cat.xPosition()
我们可以用 print(cat.xPosition()) 在调试框中打印小猫的坐标
directionread.png
cat.direction()
注意方向读取和设置是一个函数,就看有么有设置参数。
外观模块
say2s.png
cat.say("Hello!", 2)
showhide.png
cat.show()
cat.hide()
switchcostume.png
cat.switchCostume('costume1')
造型的名字可以去‘角色栏查看’
costumename.png
背景类似:
costumemore.png
cat.nextCostume()
cat.nextBackground()
cat.switchBackground('backdrop1')

effects.png
cat.changeEffect('color', 10)
cat.setEffect('color', 10)
cat.clearEffect()
特效名字可以点击方块的下拉菜单查看
effectlist.png

size.png
cat.changeSize(10)
cat.setSize(100)

声音模块
playsound.png
cat.playSound('meow')
同理,请到声音栏查看精灵具有的声音名字
soundlist.png

stopall.png
cat.stopAll()
changepitch.png
cat.changeSoundEffect('pitch', 10)
cat.setSoundEffect('pitch', 10)
cat.clearSoundEffect()

volume.png
cat.changeVolume(-10)
cat.setVolume(100)
cat.volume()

画笔模块
注意:MIT在Scratch3将画笔变成扩展件,需要先在左下角添加扩展插件导入画笔才能使用
penbasic.png
cat.clear()
cat.stamp()
cat.penDown()
cat.penUp()

pencolor.png
cat.setColor('#FF5500')
设置颜色使用HEX RGB表示

pensize.png
cat.changeColor(10)
cat.setColor(50)
cat.changePenSize(1)
cat.penSize(1)


如果碰到bug,或者对api编排或者有更多需求都欢迎在我们论坛或qq群讨论。。

最后附上我们Scratch3.py的源代码,大家可以看看具体实现和对应的api
scratch3.py (4.99 KB, 下载次数: 58)
回复

使用道具 举报

发表于 2018-3-2 09:07:31 | 显示全部楼层
这里有宝藏
回复 支持 反对

使用道具 举报

发表于 2018-3-4 09:38:47 | 显示全部楼层
软件功能这么强大。
回复 支持 反对

使用道具 举报

发表于 2018-4-9 01:13:43 来自手机 | 显示全部楼层
学python 必备!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入我们,

发现科技可以让生活更美好...

立即注册

如果您已拥有本站账户,则可

精华导读

推荐阅读

资讯排行

亲爱的,赶快加入我们吧!
X

QQ| Kittenbot Inc. 深圳市小喵科技有限公司 ( 粤ICP备16110073号 )

KittenBot.cn 2017 © 版权所有

粤ICP备16110073号

返回顶部 返回列表