带孩子玩Scratch编程:学龄前趣味程序(8)

上一篇

(8) 课文朗读机

Scratch小游戏课文朗读机

程序目标描述

这是一个简单的幻灯片播放程序,程序只负责切换舞台背景图片和朗读课文,而没有用到任何“角色”。每朗读一句话之后,都会提示用户反馈一个输入,作为暂停;如果输入了内容,朗读机也会将用户的输入朗读出来。这个程序适合小朋友做看图说话的复述练习,家长可以为每幅图片准备一些问题,辅助小朋友看图讲故事。

素材准备

这里借用了儿子贝乐英语(Best Learning)的故事复述闪卡《Pouch》,共有 6 幅图画:

Scratch小游戏课文朗读机第1步

分别保存为 1.jpg ~ 6.jpg

复述时提示的问题(即“闪卡”),制作成一个纯文本文件,data.txt:

Where is Joey?
What does he see for the first time?
What does he want to do?
NEXT
Where does Joey go?
Who does he meet?
What does Joey say to the rabbit?
NEXT
Is Joey afraid or happy?
What does he want to do after he meets Rabbit?
NEXT
Who does Joey meet?
What does Joey want to know?
NEXT
Where do the kangaroos want to go?
What does Joey say?
How do they both feel at the end?
NEXT
What do the mamas ask?
How do the kangaroos answer?
Why do the young ones want to stay out?

场景布置

删除默认的角色,保持程序中没有任何角色。点击舞台背景1,然后进入“背景”活页卡,在左侧列表中,上传我们准备的幻灯片 1.jpg ~ 6.jpg。然后,记得把第一个默认的空白背景删除。

回到“代码”活页卡中,在“变量”积木箱里,点击“建立一个列表”,并命名为“data”。然后,在 data 列表上点鼠标右键,在弹出的菜单上点“导入”,并选择我们准备的课文 data.txt,如下图所示:

Scratch小游戏课文朗读机第2步

最后,把“变量”积木箱里 “data”列表前面的勾去掉,避免它遮挡幻灯片画面。

代码搭建

Scratch小游戏课文朗读机截屏

和前面的程序一样,本例也用到了 Amazon Web Services 的“文字朗读”扩展,需要用左侧分组栏下方“添加扩展”按钮进行添加。

[data] 的项目数)、([data]的第(我的变量)项)等积木,都在“变量”分组中。它们对于“遍历”列表操作来说,是必不可缺的。

运行

如第一幅图片所示。根据问题提示,用英语复述这个故事吧。

讲解

翻幻灯、讲故事的程序,本来是最没有技术含量的程序,可以用一连串“朗读(…)”和“下一页”直接顺序连接实现。但如果那样做,我们这个有6页书、16句问话的故事,就肯定无法只用 20块积木实现了。

我们这个程序采取了一个叫“遍历”的方法:把长课文存储在了一个文本文件中,要读课文时,就把文本文件导入程序里存放数据的列表中。然后用“重复执行”积木,遍历这个列表的第1、2、3…直止最后1项。重复执行的次数,就是列表的项目数,也就是我们准备的课文的行数。

那么如何让程序按顺序朗读课文的第1、2、3…行呢?我们用到了一个变量——“我的变量”,我们在重复执行之前,先把它设为 0。然后,在循环体中,每次循环任务都先把它增加 1。这样,在每一轮循环中,“我的变量”就将依次是 1、2、3… 了。([data]的第(我的变量)项)积木,也就将依次是课文的第 1、2、3… 行。

上面这种方法,就叫做“遍历算法”。采用遍历算法,不但缩短了程序的总行数,更重要的是,我们将数据和程序代码进行了分离。课文是课文,代码是代码。如果我们想给每幅图换一些语言描述(或问题提示),甚至是要改变翻页的时机,我们只需要修改那个课文的文本文件即可,不需要改动程序代码。这对于实用程序来说,是很有意义的功能。

在本程序中,我们还定义了一个特殊文本“NEXT”,在课文中,如果遇到一行内容为“NEXT”,则程序会将舞台背景切换为下一个,实现幻灯片翻页。

希望小朋友能仔细体会这段程序哦。

发表评论

电子邮件地址不会被公开。