接 上一篇
(5) 曹操刺董卓
程序目标描述:
这一集我们终于告别 PvZ 题材,换成了一个有趣的三国故事。曹操拿着司徒王允的七星宝刀,趁董卓睡觉时悄悄进入他的卧室;不料董卓的睡眠质量很差,每1秒钟都有 30% 的几率从睡眠中突然醒来(也有 30% 的几率从清醒中入睡),用大学数学的语言说,他的醒睡状态是一个“马尔可夫链”随机过程。。玩家可以选择时机,对着天拜一拜,按下“←”键,让曹操出击,看看能不能成功刺杀老贼。
素材准备:
这个灵感来源于儿子的彩图《三国演义(晚安经典)》[1],我扫描了该书的插图,因此有必要把 Citation 写出:
[1] (明)罗贯中著, 杨青禾改编. 三国演义(晚安经典). 长春:吉林出版社集团有限责任公司, 2012: p16
全书封底显示插图绘制为孙闯,如果原作者或单位认为有侵权请联系本站撤换相关素材。
舞台背景: back.png
曹操: cao.png
董卓: dong.png
场景布置:
首先,我们先依次上传上述2个角色的素材图片,以及舞台背景的素材图片。
然后,对于董卓角色,我们还要进入“造型”活页卡,为他创建一个坐起来的造型。方法是,在“造型”活页卡的左侧列表中,在造型 “dong” 上点鼠标右键,然后选择“复制”,这样会生成一个 “dong2” 造型。
然后点选“dong2”造型,编辑它的图像。先点击造型编辑窗口下方的“转换为矢量图”;然后选中人物图像,再点工具栏的“左右翻转”将它镜像;最后拖动旋转标志,适当旋转将它立直。如上图所示。
对于舞台背景,我们同样需要创建一个曹操出击时的氛围背景。在窗口右侧点击背景的图标,进入背景编辑界面。这时在屏幕左侧,将出现的是背景的列表。注意我们上传的 back.png,在它之前还有一个纯空白背景,需要删掉它(以便让背景“back”的编号为 1)。
之后,在背景“back”上点右键,复制出一个新背景“back2”,然后利用位图编辑工具的“填充”,将图片右侧换成黑灰色。完成后,应该如上图所示。
最后回到“代码”活页卡,将董卓拖到床上,将曹操拖到屏幕右侧。
代码搭建:
曹操的代码空间:
注意,“朗读(…)”积木需要添加扩展 —— Amazon Web Services 的 “文字朗读”。方法为在最左侧“分类栏”底下找到“添加扩展”按钮,然后找到“文字朗读”模块并点击它。
当然网友也可以自己录音替换这块“朗读”积木,或者换为“外观”组里的“说(…)(2)秒”积木,甚至干脆不要这块积木也行。我们用朗读积木,是觉得这个弱弱的电脑发音对于这个故事来说,有种莫名的好笑。
董卓的代码空间:
这段程序构造了一个“马尔可夫链”(Markov Chain)随机过程,状态转换概率为每秒钟 30%,董卓每段睡眠持续的时间服从指数分布,数学期望(平均值)是 3.33秒,但不确定性很大,标准差也是 3.33秒。
由于本系列有每集代码总量控制在 20块积木以内的自我要求,以防小朋友看到过长的代码产生畏难情绪,因此上述程序实现的功能还不完整,把董卓醒来后发现曹操的对话代码进行了删节。
家长可以循序渐进,先引导孩子完成上述 20行代码,看看运行效果。当董卓醒来时,我们可以手动按“→”键使曹操退回到初始位置。
升级:
对于还有余力的小朋友,在初步试玩几次后,可以继续将董卓的程序完善,添加下图中红圈内的代码:
这里我们用到了一个小 trick,当董卓醒来、看到曹操正在出击时,会进入游戏的一个结局(也是三国演义原著的结局) —— 董卓会问曹操要干嘛,然后曹操编了献刀的谎话。我们在程序中,用了这样的办法判断这个条件:董卓醒着时,变量 (造型[编号]) = 2;曹操出击时,变量 (背景[编号]) = 2;因此,当且仅当董卓醒着、曹操也同时在出击时,这两个变量乘积为 4。因此,乘积等于 4,成为了我们这段子程序的触发条件。
运行:
行刺失败的效果(上述截图用“说(…)”积木显示了文字)。
去听听 Amazon Web Services 中文发音的曹操董卓对话吧。