Kittenblock 下 Python 的舞臺程式設計和 API
2018-03-03 18:25[KittenBlock] Kittenblock 下 Python 的舞臺程式設計和 API
riven 發表於 昨天 09:07 | 只看該作者 [複製連結]
Kittenblock下Python已經加進來有一段時間了,但是由於平時一直跟著MIT更新重構各個模組的代碼或者被@CC喵 追殺著改Bug,這裡非常抱歉這麼久都沒一篇像樣的文檔介紹舞臺Python。
今天特意介紹下(驕傲臉 )
Kittenblock內實際上有兩個python編輯視窗:
一個是在左側代碼區通過切換標籤欄‘python’切換,我們稱之為‘舞臺python’;
另外一個是當你切換硬體為robotbit後,在右側代碼區出現的代碼框,這個實際上是micropython編輯區。
它們之間的區別:
顧名思義‘舞臺python’工作於Kittenblock內部,用於控制舞臺上精靈角色和背景;而micropython則在microbit主機板上執行,Kittenblock只負責將micropython編譯成hex並下載到microbit主機板上。
首先,Kittenblock內置的python運行環境是python3.5,需要注意的是python3和2有一些語法上的差異可能會導致程式報錯。
我們先看一個最簡單的例子
- from scratch3 import *
- cat = Sprite("Sprite1", stage)
- cat.move(100)
複製代碼
第一行是導入scratch3的類檔(最後我們貼上了這個檔的原始程式碼)
第二行是產生實體一個精靈物件
- 其中Sprite1是精靈的名字,可以在舞臺下方的精靈列表中找到對應的名字
- 第二個參數是和Scratch3通信用的介面,這個介面在1.59版本後加入,跟硬體通信這個介面會不一樣,目前只要填stage就行了。
第三行是讓精靈幹什麼,這裡我們讓他向前移動100圖元
之後點擊 就可以讓python運行了,注意python運行環境初始化可能有一些延時,不過代碼一旦跑起來跟舞臺的交互是即時的。
接下來我們看看如何讓精靈不停旋轉
- import time
- from scratch3 import *
- cat = Sprite("Sprite1", stage)
- while True:
- time.sleep(0.1)
- cat.turnLeft(5)
複製代碼
我們這裡使用了python系統時間庫time,所有python3.5的系統庫都可以使用類似的方法進行導入使用。
點擊藍箭頭後會發現精靈不停的在旋轉,這時候我們只需要再點擊一下
就可以停止程式執行。
舞臺python除了可以控制精靈也可以返回精靈當前的一些狀態,例如:
- import time
- from scratch3 import *
- cat = Sprite("Sprite1", stage)
- cat.say("my direction ={}".format(cat.direction()))
複製代碼
可以看到小喵說出了自己的方向
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)
如果碰到bug,或者對api編排或者有更多需求都歡迎在我們論壇或qq群討論。。
最後附上我們Scratch3.py的原始程式碼,大家可以看看具體實現和對應的api
scratch3.py (4.99 KB, 下載次數: 20)
標籤:
—————