分享

scratch新手之路5——链表

 小曾4om1ilfwen 2017-08-27

小八前一个星期去了西安玩,欣赏到了秦兵马俑、华清宫、法门寺等景点,与小伙伴们叽叽喳喳地聊天,连嗓子都哑了。#呵呵

小八的scratch助教老师(吃货)最近搞了一个公众号,叫“海的味道海鲜知道”,想学习怎样烹饪海鲜的人,不妨关注一下!(小广告*1)

对了,现在小八的公众号拥有了留言功能,各位看完文章可以发表自己的意见啦!我会一个一个加入精选栏目(当然太多也就不行了^_^)

这一次我们要专攻scratch里一个极有用的东西——链表。相对于变量来说,链表更为庞大,可以代替好多个变量所储存的内容。等到需要的时候,再从链表中调出来使用。

但变量和链表是相辅相成的,在很多例子中,我们会配合变量去使用链表,这两者是分不开的。

然而在我的scratch生涯中(其实也就三年),最不了解的就是链表,因为做动画、做接球、做枪战、做愤怒的小鸟,都只用到很小一部分链表的知识。正是因为如此,一些小学生都会对这一方面比较薄弱,所以这一期我会予以重点地讲。

咱们先把所有关于链表的脚本弄出来(比上次多得多,是不是?):

第一个就像变量一样用,可以嵌套在方框框和圆框框内。

第二个是将某一段字符串加入到这个链表之中,而第三个正好相反,是删除某一项。第四项的功能比第二项的功能更强大,它可以随意把内容加入到任意位置。

如果你想替换掉某一项为另一段字符串,就用第五个积木,它非常简洁地省去了先删除再添加的麻烦。

后面两个是圆圆的积木,可以像变量一样嵌套,“链表的第几项”就不多说了,而“某链表的长度”可以省去两个不同种类积木的嵌套,如下,他们是一样的(尽管小八认为第二个又红又绿看起来很高级):

最后一个是布尔类型(即真和假)的积木,可以辨别一个链表中是否包含或不包含某个字符串。


说了这么多,你无论如何也得看懂了吧!这些脚本非常绕,需要花心思搞搞清楚。


用到链表的一个非常典型的例子便是“选择天气”。用户可以从链表中看见随机选出来的一个天气,然后让小猫告诉你。如果只用“数字与逻辑运算”中的随机取数可就行不通啦,它是要随机选择字符串,在这里链表就显得非常重要了(当然不用链表也可以做,只是灰常复杂),就让链表大显身手吧!

我们先将所有的天气数据加入到“天气”这一链表当中,这里分别是雨天、晴天和阴天。

我们为了使脚本更容易视读,就用个单独的变量储存一下随机选出来的天气,这里是在第一项和第三项之间随机选。

然后,为了将语言更自然,我们用字符串连接的积木,让小猫说出天气之前再多说“今天是:”这几个字。

整个程序大功告成。

如果不用链表,会是这样:

显然第一段脚本更为简洁明了,在制作大程序时,同样的效果,脚本越短则更为胜出。


下面这个例子来源于scratch吧里的“大猴抱小猴”,是随机将1到几之间的数抽取,而不重复,如同1到4,电脑会显示如同“4、1、3、2”或“1、2、4、3”等,但彼此之间却不重复,如果用随机取数,则会经常出现“4、2、3、3”或“1、3、2、2”等重复。那就需要用到链表。


当然,小八没有抄袭,我自己原创的取数程序更为简便,上图:

小八就不多讲了,主要思想是先将1到4(这里以1到4为例,也可以1到5、1到6)每个数按照顺序加入到“抽取”这一链表中,然后通过每次加入、删除来转移到“显示”链表,而取数的范围也在逐渐减少,一开始是在1到4之间随机取数,后来逐渐为1到3、1到2、最后为1到1,重复了四次(也是一开始取值的最大值),而这范围缩小则利用“减少”这一变量实现。



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多