#9 用 Swift 打造跳舞機器人 BoogieBot
API
App 開發者經常會使用別人寫好的程式碼。在 BoogieBot 這個例子中,定義了很多函數,讓 BoogieBot 能夠啟動、移動以及變更顏色。
控制 BoogieBot 行為的這組函數,我們稱為「Application Programming Interface」(應用程式介面),簡稱為「API」。
API 是軟體開發者可以用來完成任務的一組特定功能。在本例中,BoogieBot API 能夠讓軟體機器人跳舞。
下載電子書
下載電子書 Develop in Swift Explorations 後
點選以下頁面的 Download student materilas 下載書本提供的範例。(第 11 頁)
獲得檔案 student.zip 解壓之後 是一個 Student-Explorations 資料夾
打開 BoogieBot.playground 後,照著檔案裡的說明操作
出現警告視窗說這是網路下載的,確定你要打開嗎?按下 Trust and Open 打開
點選下方的 Next 按鈕可切換到下一頁。
BoogieBot 的 API 提供以下 function :
- 動動手臂 leftArmUp(), leftArmDown(), rightArmUp(), rightArmDown()
- 動動腿 leftLegUp(), leftLegDown(), rightLegUp(), rightLegDown()
- 擺臀。shakeItLeft(), shakeItRight(), shakeItCenter()
- 跳 jumpUp(), jumpDown()
- 變色 fabulize(), defabulize()
- 設定標題和副標題。setBotTitle(“My Awesome Dance”), setBotSubtitle(“By The Boogiemaster”)
切換到 page 10 Boogie Workshop 寫程式
開始之前,請確保已將你的 Playground 設定為可以使用即時顯示區。以下程式碼用於設定 BoogieBot 進行跳舞:
runBoogieBotDemoMode()
即時顯示畫面會顯示在右方 即時顯示區。👉
如果沒有顯示任何東西,請選擇「Editor」>「Live View」。編輯器區域現在應該會分割為兩個部分,右半邊是即時顯示區。
即時顯示畫面會顯示在右方 即時顯示區。👉
如果沒有顯示任何東西,請選擇「Editor」>「Live View」。編輯器區域現在應該會分割為兩個部分,右半邊是即時顯示區。
你告訴 BoogieBot 像這樣跳舞:
fabulize()
shakeItLeft()
shakeItRight()
shakeItCenter()
一旦跑完一遍舞步組合,BoogieBot 就會停止。你可以使用「Editor」>「Execute Playground」再次查看這些動作。改變舞步組合的話 BoogieBot 會自動從頭開始再做一遍。
fabulize()
fabulize()
fabulize()
fabulize()
leftArmUp()
rightArmUp()leftLegUp()
rightLegUp()
leftLegDown()
rightLegDown()
shakeItLeft()
shakeItRight()
shakeItCenter()
jumpUp()
jumpDown()leftArmDown()
rightArmDown()
defabulize()
BoogieBot API
啟動 BoogieBot:
- startBot()
移動 BoogieBot:
- leftArmUp()、leftArmDown()、rightArmUp()、rightArmDown()
- leftLegUp()、leftLegDown()、rightLegUp()、rightLegDown()
- shakeItLeft()、shakeItRight()、shakeItCenter()
- jumpUp()、jumpDown()
改變 BoogieBot 的顏色:
- fabulize()、defabulize()
舞步組合
跳舞是一件有趣的事情,但若是逐一寫出每一個動作,那麼即使是描述一支非常簡單的舞蹈也會相當繁複冗長。因此,大家通常會將個別動作串在一起,然後為整套舞步組合命名。
func doTheDisco() {
leftArmUp()
shakeItRight()
leftArmDown()
shakeItCenter()
}
當你決定了舞步組合中的各個移動動作之後,就可以呼叫剛剛建立的函數,讓機器人開始跳舞:
startBot()
fabulize()
doTheDisco()
doTheDisco()
doTheDisco()
程式設計師透過函數將各個工作區塊組合在一起。回顧一下「函數」Playground 中所學的內容,函數具有以下作用:
函數可以重複使用,節省了閱讀和打字的時間。
函數可以單獨理解,因此你不必考慮每一個步驟。
若更動函數,其他有使用到該函數的地方也能同時更動。
為作品簽名
BoogieBot 也有一個 API,可用來對已建立的動作進行個人化。
為你的機器人命名:
setBotTitle("My Awesome Dance")
並加上副標題。這時可以加入你的名字:
setBotSubtitle("By The Boogiemaster")
分享熱舞
BoogieBot 還有最後一個功能。
你除了可以在即時顯示區觀看 BoogieBot 舞蹈之外,也可以把作品存成動畫 GIF 跟朋友分享。
只要在啟動你的機器人時,後面加上 startRecording():
startBot()
startRecording()
然後在下面新增舞蹈動作。當 BoogieBot 跳完舞時,會顯示「Save」按鈕。按一下該按鈕可將舞步組合儲存為動畫 GIF。
請記住,一旦跳到舞步組合的最後一步,BoogieBot 就會停止。你可以使用「Editor」>「Execute Playground」再次查看這些動作。
// If you're going to send it, sign it.
setBotTitle("The next dance craze")
setBotSubtitle("You saw it here first!")
// Start the dance!
fabulize()
leftArmUp()
rightArmUp()leftLegUp()
rightLegUp()
leftLegDown()
rightLegDown()
shakeItLeft()
shakeItRight()
shakeItCenter()
jumpUp()
jumpDown()leftArmDown()
rightArmDown()
defabulize()
總結
在這個 Playground 中,你了解到 API 的概念,其是一組由其他開發者提供以協助你工作的函數。學會程式設計的基礎之後,你將學習更多有關使用 API 的知識。
你也做了許多使用和定義函數的練習,還有使用函數將重複的工作分類在一起。
舞步組合其實就是照順序重複執行一些設定好的動作,我們可以將某些動作的組合定義成一個函數,再將這些小函數組合起來變成一個大函數,以此推類,這樣的方式非常適合編排出色的舞蹈。
熱舞教室程式碼
startBot()
startRecording()
setBotTitle("機器熱舞")
setBotSubtitle("By The Rose")
func doTheDisc(){
fabulize()
leftArmUp()
rightArmUp()
leftArmDown()
rightArmDown()
jumpUp()
jumpDown()
fabulize()
leftLegUp()
leftLegDown()
rightLegUp()
rightLegDown()
shakeItLeft()
shakeItRight()
shakeItCenter()
jumpUp()
jumpDown()
fabulize()
}
for time in 1...3 {
doTheDisc()
print(time)
}