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

  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, 下載次數: 20) 

—————

返回