本文介绍的作品是全国青少年创意编程与智能设计大赛创意编程比赛一等奖获得者孙佳阅同学的最新参赛作品。
作品说明
暑假里,我无意中被妈妈订阅的一期《三联生活周刊》的主题《我把自己弄丢了》吸引了,我一口气读完了里面的每一篇相关文章,了解了一种我从未听说过的疾病——阿尔兹海默症。患者的世界深深震撼了我,他们的记忆在被疾病一点一点无情地吞噬,但他们仍然能够感受到悲哀、孤独、不安,仍然能够感受到爱与被爱。于是,我决定以此作为作品的主题,我想通过这个作品,让玩家走进阿尔兹海默症患者的内心,呼吁整个社会对他们的关注与爱。
正文
在上一篇文章中,果冻老师和同学们一起完成了《记忆碎片》游戏中所有拼图碎片的收集,碎片收集齐了,就要将它们拼成一幅图片,于是我们就继续往下进行吧。
在碎片的代码中,我们已经知道了,每收集一个碎片,收集数量这个变量的数值就会增加1,当六个碎片全都收集齐,也就是收集数量这个变量的值变为了6,就会广播第一关的全都收好了。
同时,代码中还将拼好数量这个变量的值初始化为0,代表还没有一张碎片拼好。
第一关的全都收好了
接收第一关的全都收好了这个广播的角色有很多,其中有四个角色会直接响应这个广播:
它们是相框(角色1)、唱碟机、唱片和唱臂,下面我们分别的看一看这四个角色的代码。
相框接收到广播后,会逐渐的显示出来:
每一个关卡相框角色都会显示不同的造型,这里我们在拼第一张图,所以就将它设置为造型1,然后将相框移动最后面,为什么要设置这个语句呢?因为相框作为背景,相片是要放在它上面的,拼图的碎片也要显示在相框的上面,所以我们就要设置移到的语句将它放在所有角色的后面。接着设置虚像的特效,让相框从透明到不透明逐渐的显示出来。最后,等待拼好数量这个变量的值为7,也就是说拼图完成,以及播完了?这个变量为1,也就是唱片的音乐播放完后,将相框隐藏掉。
唱片呢接收到第一关的全都收好了的广播后,它会变为可拖动的模式,我们需要拖动它并放在唱碟机上。
在上面的代码中一共有三个等待语句,第一个等待语句是一组XY坐标值的判断,当唱片的X坐标位于152到172之间,同时Y坐标位于88到108之间的时候,等待语句的条件成立。这条语句的意思是,我们用鼠标拖动唱片放在唱机上的时候,并不需要完全对准唱机的唱盘位置,只需要移动到一个设定好的范围内,即可完成唱片放在唱机上的动作。
如上图所示,果冻老师标记的红色方框就是唱片可以放置的范围,同时也标记出了X、Y的坐标,只要放在这个范围内,等待语句的条件就成立,代码会继续执行后面的逻辑。
第二个等待语句是判断鼠标的状态,我们在拖动唱片的时候,一定是先将鼠标指针移动到唱片的上面,然后按住鼠标左键不放,再移动鼠标,当鼠标的左键被松开的时候,唱片的位移过程也就结束了。这个等待按下鼠标?不成立的语句就是等待鼠标左键放开的哪个瞬间,如果不添加这条语句,当我们拖动唱片到指定的区域范围内后,唱片就会开始旋转并播放背景音乐,这并不符合正常的鼠标拖动逻辑。
第三个等待语句很简单,就是等待背景音乐播放完,如果完了,就将唱片隐藏掉。
在唱片的代码中,还有一个重复执行语句,它判断计时器的数值是否大于26.37,如果条件不成立的话,就会一直执行让唱片向右旋转的指令,26.37实际上是背景音乐的时长,那么也就是说背景音乐只会播放一次,当它播放完后,唱片就会停止旋转了。
唱碟机呢接收到第一关的全都收好了的广播后,它的任务很简单,就是等待唱片放上来后播放背景音乐。
这里有两个播放声音的指令,因为朗读者的声音和背景音乐在这个作品中是独立的两个文件,我们需要同时播放它们,将它们组成完整的背景声音。播放声音的条件就是等待拼好数量变量的值等于1,也就是唱片拖动放在唱碟机的指定位置的时候就开始播放了。
唱臂的代码更简单了,当唱片被拖动到指定的位置后,唱臂会轻轻的逆时针旋转30度,模拟出真实的唱碟机播放唱片的动作。
同学们要注意,唱臂逆时针旋转的中心点要在唱臂的顶端中心位置,大家是否还记得在《时空穿越》这篇文章中,飞毯要与科学家的脚步对齐,我们需要改变科学家的角色中心点位置,这里也是一样的,我们也要改变唱臂的中心点位置,于是在造型选项卡中拖动唱臂,将它的中心点移动下图红色圆圈的位置:
这样,唱臂的旋转动画才会正确。
当唱碟机开始播放背景音乐的时候,我们收集到的六个拼图碎片就会显示出来,并且打乱摆放在相框的两侧。碎片的操作过程与唱片是类似的,需要拖动它们到指定的位置,所以它们的代码也基本上是一样的。
可以看到,碎片的代码也有三个等待语句,前两个与唱片的语句是一样的,等待碎片被拖动到指定的区域和等待鼠标按键松开。而第三个等待语句稍稍有点不同,唱片中是等待背景音乐播放完,这里是等待所有的碎片都拼接完成。
当拼图完成后,所有的碎片就会逐渐的隐藏掉,接着背景会变成完整相片的图案。
整个拼图的过程是这样的:
第一关的拼图到这里就完成了,紧接着游戏会进入第二关,同样的我们需要再重复一遍收集碎片、拖动唱片、拼接碎片的过程,第三关、第四关、第五关同样如此,它们的代码逻辑都是类似的,果冻老师就不在这里详解了,大家下载源代码后自己查看哦。
当我们拼好第五关的碎片后,游戏的所有任务就完成了,如果游戏在这里就戛然而止是不是显得太唐突了吧,孙佳阅同学想到了一个好办法,就是将游戏的制作者和参与者以及所使用的音乐名称都介绍一下,就像电影结束的字幕一样,从舞台的下边向上边一直的滚动出来。
添加上滚动的字幕后整个游戏就完整了,那像这样的字幕效果是如何实现的呢?下面我们就一起来看看吧。
滚动字幕
首先我们需要创建一个角色,然后将字幕中的每一行文字都创建成一个造型,就像这样:
在Scratch中,角色正常一次只能显示一个造型,怎么样让多个造型同时显示在舞台上呢?那就要请出Scratch中的克隆大师了,它可以为角色创建出不同样式的分身,而且每一个分身我们都可以单独控制。
当第五关的拼图完成之后,滚动的文字就会出现了。角色中一共有10个造型,代码中通过重复执行语句将第2个到第10个造型都克隆了一份,第1个造型可以克隆也可以不克隆,孙佳阅同学在这里选择了不克隆,就让它的真身从屏幕的底部滚动到顶部。
在重复执行语句中执行了9次下一个造型语句,所以重复执行完成就会停留在第10个造型上,接着在重复执行的后面再写一个下一个造型语句,角色就又回到第一个造型了。接着让造型1文字在10秒内从舞台的底部滑行到顶部,就完成了第一行文字的滚动显示效果。
第一行往后的文字都是克隆的,所以代码需要写在当作为克隆体启动时语句的下面。
截图中果冻老师只截取了第二行到第四行文字的代码并做了详细的注释,每个文字造型的克隆体代码都是非常类似的,不同的只有出现的时间点不一样,同学们查看注释就能了解代码的运行逻辑。
这里要注意的是,最后一行文字“THE END”,它不是从底部滚动上来的,而是在屏幕中间逐渐显示出来,所以它的代码与其它文字不一样:
完成
到这里,我们就完成了《记忆碎片》游戏的所有关卡,同时也学习了作品的代码开发过程。通过这部有关阿尔兹海默症的作品,同学们有没有受到一些启发呢?相信一定有的吧!这个作品果冻老师觉得还有两个小小的遗憾,第一个就是开头的打字动画缺少一个跳过按钮,第二个就是收集碎片的提示信息不是很清晰,请各位小朋友下载源代码后自己完善一下。最后还是要说,面对这样优秀的作品大家一定要多阅读多理解多练习,融会贯通才能熟能生巧哦。
请问源码从哪里下载那?