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