Scratch 询问与回答
2020-08-02Intoweb
Intoweb
侦测组中询问与回答模块是Scratch人机交互的基础入口。我们需要熟练地掌握并运用在自己的程序中。下面我们通过自问自答的方式完成一段对话,除了用到询问与回答模块,还会初步涉及字符串的相关内容。
程序脚本规划:选择合适的背景Bedroom 1与角色Abby(绿衣)和Avery(紫衣)。
程序流程设计:当绿旗被点击后,角色Avery进行提问,操作者控制Abby的问题进行回答。
1. 在开始询问之前,我们先完成对角色的定位和对造型做基本设置。注意Avery需要将旋转方式设为左右翻转,并面向-90°方向。
ABBY造型
2. 侦测组的“询问‘What's your name?并等待”就是本文的主角了。询问模块里面的一段英文“Whats your name?”是Scratch自带的,我们可以修改它为中文“请问你叫什么名字?” 或者任何需要的对话。
在使用询问模块时,下方会出现一个对话框,对话框里面就填写我们的回答。回答的内容需要我们从外部输入,输入了回答的内容后,点击对话框后面的“√”或者敲回车键即可完成回答。
AVERY需要转为背向
另外,在角色显示时与隐藏时,询问的界面有所不同,角色显示时问句在气泡框中,角色隐藏时问句显示在对话框中。
3. 與询问模块配合使用的是“回答”模块,就在侦测组询问模块的下方。操作者输入对话框的字符串会被存入回答。
4. 为了在两个角色之间传递信息,使用广播。
Avery在询问后等待操作者输入姓名“李明”后将其存入回答中,发出广播“消息1”并等待。
为了让Abby收到消息后会说出“我叫李明”,我们需要用到运算模块组的“连接‘apple 和‘banana”模块来实现字符串“我叫”与回答内容“李明”的拼接。
5. 接下来的对话内容我们计划实现,Avery在询问“小李你今年几岁”,这个小李是根据操作者输入的姓名做提取的。我们将回答的姓名“李明”作为一个字符串,提取它的第一个字符存入变量“姓”。并用连接模块来询问,由于连接模块一次只能连接两个字符串,当需要连接的内容超出两个时就使用多个连接模块嵌套使用。
Avery询问年龄病等待
6. 回答内容除了可以作为字符串配合“说‘你好‘2秒”对话使用外,如果输入的回答是数字,还可以直接参与运算。现在我们让Avery计算几年(随机数)后Abby几岁。
Abby收到信息并回答
如果回答9岁,随机数为2年后,那么Avery说出“你今年‘9岁那么‘2年后,你‘11岁”。直接用加法运算符连接“回答”和变量“年”,就可以计算出11。用多个连接模块将语句合理拼接起来。
7. 调试
至此,整个完整的询问与回答的脚本完成了,我们执行程序运行,检测一下是否有错误。
询问者avery 代码
回答者abby的代码
询问与回答的编程设计,采用的是问与答交互的方式进行。同时,我们将字符串的相关知识引入这个案例进行了学习,特别要注意的就是字符串之间的组合方式。另外,变量也与字符串进行了拼接和计算。