Intoweb
偵測組中詢問與回答模塊是Scratch人機(jī)交互的基礎(chǔ)入口。我們需要熟練地掌握并運用在自己的程序中。下面我們通過自問自答的方式完成一段對話,除了用到詢問與回答模塊,還會初步涉及字符串的相關(guān)內(nèi)容。
程序腳本規(guī)劃:選擇合適的背景Bedroom 1與角色Abby(綠衣)和Avery(紫衣)。
程序流程設(shè)計:當(dāng)綠旗被點擊后,角色Avery進(jìn)行提問,操作者控制Abby的問題進(jìn)行回答。
1. 在開始詢問之前,我們先完成對角色的定位和對造型做基本設(shè)置。注意Avery需要將旋轉(zhuǎn)方式設(shè)為左右翻轉(zhuǎn),并面向-90°方向。
ABBY造型
2. 偵測組的“詢問‘What's your name?并等待”就是本文的主角了。詢問模塊里面的一段英文“Whats your name?”是Scratch自帶的,我們可以修改它為中文“請問你叫什么名字?” 或者任何需要的對話。
在使用詢問模塊時,下方會出現(xiàn)一個對話框,對話框里面就填寫我們的回答?;卮鸬膬?nèi)容需要我們從外部輸入,輸入了回答的內(nèi)容后,點擊對話框后面的“√”或者敲回車鍵即可完成回答。
AVERY需要轉(zhuǎn)為背向
另外,在角色顯示時與隱藏時,詢問的界面有所不同,角色顯示時問句在氣泡框中,角色隱藏時問句顯示在對話框中。
3. 與詢問模塊配合使用的是“回答”模塊,就在偵測組詢問模塊的下方。操作者輸入對話框的字符串會被存入回答。
4. 為了在兩個角色之間傳遞信息,使用廣播。
Avery在詢問后等待操作者輸入姓名“李明”后將其存入回答中,發(fā)出廣播“消息1”并等待。
為了讓Abby收到消息后會說出“我叫李明”,我們需要用到運算模塊組的“連接‘a(chǎn)pple 和‘banana”模塊來實現(xiàn)字符串“我叫”與回答內(nèi)容“李明”的拼接。
5. 接下來的對話內(nèi)容我們計劃實現(xiàn),Avery在詢問“小李你今年幾歲”,這個小李是根據(jù)操作者輸入的姓名做提取的。我們將回答的姓名“李明”作為一個字符串,提取它的第一個字符存入變量“姓”。并用連接模塊來詢問,由于連接模塊一次只能連接兩個字符串,當(dāng)需要連接的內(nèi)容超出兩個時就使用多個連接模塊嵌套使用。
Avery詢問年齡病等待
6. 回答內(nèi)容除了可以作為字符串配合“說‘你好‘2秒”對話使用外,如果輸入的回答是數(shù)字,還可以直接參與運算?,F(xiàn)在我們讓Avery計算幾年(隨機(jī)數(shù))后Abby幾歲。
Abby收到信息并回答
如果回答9歲,隨機(jī)數(shù)為2年后,那么Avery說出“你今年‘9歲那么‘2年后,你‘11歲”。直接用加法運算符連接“回答”和變量“年”,就可以計算出11。用多個連接模塊將語句合理拼接起來。
7. 調(diào)試
至此,整個完整的詢問與回答的腳本完成了,我們執(zhí)行程序運行,檢測一下是否有錯誤。
詢問者avery 代碼
回答者abby的代碼
詢問與回答的編程設(shè)計,采用的是問與答交互的方式進(jìn)行。同時,我們將字符串的相關(guān)知識引入這個案例進(jìn)行了學(xué)習(xí),特別要注意的就是字符串之間的組合方式。另外,變量也與字符串進(jìn)行了拼接和計算。