Scratch编程教程-学科融合:故事机器

5W1H讲故事技巧
你熟悉讲述故事的5W1H方法和技巧吗?
5W1H是指英语中“Who(谁)”、“What(做什么)”、“When(什么时候)”、“Where(在哪里)”、“Why(为什么)”和“How(怎么样)”的首字母缩写组合。故事通常由这些内容构成。将这些内容组合在一起,是否可以创作出各种各样的故事呢?
我们稍微修改这些内容,按照“谁”、“和谁”、“什么时候”、“在哪里”、“怎么样地”和“做了什么”来组合:
- 谁:勇士、魔王、村民、老爷爷、白雪公主、孙猴子、恐龙、外星人、僵尸
- 和谁:白马王子、地主、霸王龙、医生、士兵、老师、熊大、小猪佩奇、幻影忍者
- 什么时候:现代、遥远的未来、唐朝、寒武纪、昨天、圣诞节、2080年、星期日、半夜三更
- 在哪里:北京、火星、学校、高铁、草原、沙漠、游乐场、金字塔
- 怎么样地:流畅地、激烈地、缓慢地、高兴地、温柔地、飞快地、悲伤地、优雅地
- 做了什么:战斗、结婚、交朋友、唱歌、玩游戏、百米冲刺、旅游、读书、看电影
从这些内容中随意选择一些组合在一起,就可以创作出各种各样的故事。例如:
“现代,村民和幻影忍者在游乐场高兴地看电影。”
“唐朝,老爷爷和霸王龙在火星上悲伤地旅游。”
“2080年,魔王和士兵在沙漠里优雅地百米冲刺。”
哈哈哈,这太有趣了,^_^。接下来,我们可以使用Scratch实现机器人讲故事的效果。
准备工作
打开Scratch编程软件,新建一个作品,将准备好的背景图片和角色添加进来,如图所示:
添加舞台背景和角色
当然,你可以选择你喜欢的背景和角色。
认识列表
在讲述故事时,有6个要素需要考虑,分别是“谁”、“和谁”、“什么时候”、“在哪里”、“怎样”以及“做了什么”。每个要素包含多个内容,那么这些内容从哪里来、怎么保存、又如何获取呢?这是我们需要首先考虑的问题。
在Scratch中,变量可以保存信息,但每个变量只能保存一个单一的信息。如果需要保存多个信息,我们就需要使用“列表”。如果把变量比作一个抽屉,那么列表就是一排抽屉。列表里面的内容都会分配一个编号,从1开始,我们可以通过这个编号来找到相应的项目。
在变量模块区域,点击“*建立一个列表*”,创建列表,命名为“谁”,如图所示:
创建“谁”列表
列表创建好后,列表是空的,没有任何内容。我们可以点击左下侧的“+”按钮,添加内容
空白列表
逐个点击“+”,将勇士、魔王、村民、老爷爷、白雪公主、孙猴子、恐龙、外星人、僵尸加入到列表,完成之后,效果如图所示:
“谁”列表内容
同样的方式,我们可以创建其它5个列表,并将内容加入到列表中。创建之后的效果如图所示:
创建好的6个列表
获取列表的内容
列表内容是有了,如何获取这些内容呢?仔细观察这些列表,可以发现每个列表左边都有一个数字编号,这就是我们获取列表项内容的钥匙,在列表提供的指令中,有一个指令“*列表的第1项*”,点击一下,显示的刚好的第一项内容,如图:
获取列表项内容
点击该指令左边的箭头,可以选择其它列表,更改指令右边的数字,可以获取其它项内容,但是在讲故事的时候,内容都是随机生成的,要实现随机效果,可以借助运算指令“在1和10之间取随机数*”,同时可以使用列表指令“列表的项目数*”获取列表内容的数目,代码如下所示:
随机获取列表项内容
其它列表项内容,也可以使用同样的方式来处理,你还可以随时添加、修改和删除列表中的内容,而不需要修改任何程序,是不是很强大。
合成语句
既然可以获取列表内容了,接下来的任务就是组装了,就是将获取的内容按照一定的顺序连接起来即可,连接也是一个常见的操作,Scratch专门提供了一个字符连接指令,即“*连接苹果和香蕉*”,它可以连接两个内容,也可以连接更多的内容,如图:
连接3个内容
为了简单起见,我们可以再创建两个变量“故事”和“台词”,其中“故事”表示整个故事内容,而台词则是指每一次从列表取出的内容,如图:
创建变量台词和故事
一般故事开始,我们都是从什么时候开始的,所以我们先从列表“什么时候”中随机获取列表项,然后进行连接操作,为了方便,我们假定在按下空格键的时候就开始讲一个故事,对应的代码如下:
合成故事的第一句
需要重点关注的是,刚开始的时候,将变量“故事”设置为空,这是在字符串连接操作时必须要做的初始化操作,并且不能设置为0(想想为什么)。
可以直接点击该代码块的第一个指令
合成故事的第一句效果
完成作品
按照同样的方式,我们分别随机获取其它5个列表中的内容,并进行连接操作,就可以讲出一个完整的故事了,具体的代码如下图所示:
Scratch故事机器完整代码
执行程序,不断的按下空格键,其效果如图所示,这些故事实在是太有趣了,哈哈哈
故事机器运行效果