Kittenblock下Python的舞臺程式設計和API

2017-12-12 18:57

[KittenBlock] Kittenblock下Python的舞臺程式設計和API

riven 發表於 昨天 16:34 | 只看該作者 |只看大圖 |倒序流覽 |閱讀模式 [複製連結] 打印  

 

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有一些語法上的差異可能會導致程式報錯。
我們先看一個最簡單的例子

1.  from scratch3 import *

2.  cat = Sprite("Sprite1", stage)

3.  cat.move(100)

複製代碼

第一行是導入scratch3的類檔(最後我們貼上了這個檔的原始程式碼)
第二行是產生實體一個精靈物件,其中Sprite1是精靈的名字,可以在舞臺下方的精靈列表中找到對應的名字
 
 

·        第二個參數是和Scratch3通信用的介面,這個介面在1.59版本後加入,如果跟硬體通信這個介面會不一樣,目前只要填stage就行了。

第三行是讓精靈幹什麼,這裡我們讓他向前移動100圖元
之後點擊  就可以讓python運行了,注意python運行環境初始化可能有一些延時,不過代碼一旦跑起來跟舞臺的交互是即時的。
接下來我們看看如何讓精靈不停旋轉

1.  import time

2.  from scratch3 import *

3.   

4.  cat = Sprite("Sprite1", stage)

5.  while True:

6.      time.sleep(0.1)

7.      cat.turnLeft(5)

複製代碼

我們這裡使用了python系統時間庫time,所有python3.5的系統庫都可以使用類似的方法進行導入使用。
點擊藍箭頭後會發現精靈不停的在旋轉,這時候我們只需要再點擊一下  就可以停止程式執行。
舞臺python除了可以控制精靈也可以返回精靈當前的一些狀態,例如:

1.  import time

2.  from scratch3 import *

3.   

4.  cat = Sprite("Sprite1", stage)

5.  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, 下載次數: 3) 

經Kittenbot 授權  轉貼這篇文章

 

—————

返回