奇妙的代码森林
来源:第十二届广东省科普作品创作大赛2019-06-27

三等奖作品     作者:郭佳熙


奇妙的代码森林
第一章  勇敢的“事件们”

    如果你问我,在整个编程中,最重要的是什么?那我一定会不假思索地说:“是那四个“事件”模块呀!”

     我常设想,如果把编程的代码看作一个家族,那么“事件”代码就好比家庭中最年长的几位族长。如果没有在程序中增加“事件”模块的话,那么这个程序便运行不了。可别小瞧它们,在这四位元老之中,还有着等级之分。

    “当程序开始时”是四人之中的大哥。它是整个编程程序的关键之处,如果没有这个模块的话,不管使用多少模块,这个程序基本上就是一个废弃的程序了,无法正常运行,那一切将是徒劳。因为,如果没有“当程序开始时”的设定,那么程序就不知道从何时开始,也就会变得“六神无主”,杵在那儿一动也不动。

    “当收到广播”可是四大族长中的二把手。它主要用于当角色碰上发送到自己的一个消息后作出的反应,相当于是文章中的过渡段,把上面发来的程序连接到下面将要发生的效果之中,它最喜欢的事就是与“广播”在一起玩,两个人还是一对好搭档哩!

     接下来要出场的这位可神气了,它的出身连接着现代的一个名词:克隆。对,它就是“当克隆出现时”,它位居第三,主要负责对复制出现的角色进行程序上的指示。如果没有它,那么,被复制出来的角色只会杵在那儿一动也不动,像木头一样。它广结“人缘”与许许多多的程序都颇为友好,像等待几秒啊,添加碰撞器一类的“平常代码”,也喜欢与它在一起,可以创造出很多有趣的效果。

     “当点击对象时”在程序中也颇为重要,但并没有我们之前提到过的那三位出场的频率多。它主要的功能是告诉角色,当你被鼠标点击之后,你该做出什么反应,该表示什么。这种代码常常被使用于代替碰撞器和频频出现的广播。别看它长得不起眼,但它可是一个“节俭大王”呢!只要有它在,便可以省去许多的代码而达到你想要的效果。 “动画”常常喜欢跟在它身后,它走到哪儿,身后总少不了它的小跟班——“动画”。

   “事件”四大族长的传奇故事,到这里就结束了。身为程序的元老级领导者,他们总是团结一心,勇往直前,给代码们开辟出新的天地。

   

第二章  循环,循环,循环

    在神秘莫测的程序森林里,有这样一种程序:它们的出现与“事件”差不多频繁,它们能使一种事情在角色上发生很多次,它们就是最啰嗦的种族之一——“循环”模块。

    “循环”模块又分好几种,它们占据了 “控制中心”绝大多数的位置。不管在什么程序里,只要有需要角色多次重复做一种动作的地方,就会有它们的身影。

    尽管如此,每一个“循环”兄弟姐妹的分工还是有所不同的。像“无限循环”,它在“循环”中可厉害了。它不仅能让角色无限反复地做同一个动作,还可以“吞”下各种各样的程序,几乎没有人敢得罪它。不然,永远做一项工作会导致人烦躁不堪,那可真让人受不了。

    不过,在“无限循环”发火的时候,并不是所有人都会拿它没有办法。比如“跳出当前循环”的性情就很仗义。每当“无限循环”对着一个角度使用“暴力”的时候,它总是跳出来为被困住的代码和角色解围。只要“跳出当前循环”代码精灵出面,不论“无限循环”多么的强势,都会一瞬间之内被“跳出当前循环”所制止。“跳出当前循环”无疑是治理“无限循环”暴躁心情的“良方”啊!!

    可是,我们这位大救星“跳出当前循环”却不能独自发挥作用,它必须与别的代码合作才能发挥效用。这可怎么办呢?如果没有其他的代码帮忙,它是绝不可能起任何作用的。好在有一个好姐姐“如果……什么”代码很愿意帮它的忙。它可以设置一个条件,然后让“如果……什么”这个条件托着它来到“无限循环”的身边,并告诫它:“当你看见我设定的这种情况的时候,马上停止你的胡闹行为!”这样,才能使我们的各位“代码”“角色”的同胞们成功脱险。

    这两位“和事佬”在“控制中心”被使用的次数也非常之多。而我们接下来要认识的这几位,名气虽然比前几位要小些,但功劳却丝毫不减。

    “循环几次后停止”是脾气仅次于“无限循环”的暴躁家伙。不过值得庆幸的是,它倒还有些克制,不必两位“和事佬”亲自出面,它的指令达到一定次数之后,它的“怒火”渐渐平息,也就不“发作”了。

    “当……什么停止循环”差不多可以算作两位“和事佬”与“无限循环”的结合体了。可以看作它们之中的小弟弟,它性情温和但又不失威严,对自己的“小脾气”都有着良好的控制性,可以算是“完美”代码之一。可奇怪的是,几乎没有人会去注意它。它总藏在哥哥姐姐的身后,哪里需要它,它便挺身而出。

“蹬蹬蹬——”从远处传来这样一种声音,我一听这声音,立马就“头痛”起来,看来又是那个粗心大意的家伙来了!

第三章 粗心大意的广播和变量

    “嘀嘀嘀——您的快递已到,请注意查收。”

“咦,我并没有订快递呀,你是不是又送错了?”

“哦,是的,抱歉!”

 看!变量和广播二位,又把快递送错地方啦!说起来,它们还是代码森林里的“小迷糊”呢!

 “广播”代码这一支种类特别少,除了第一章提到过的“当收到广播时”之外,它们仅仅只有两位同胞。这两位来自广播家族的小家伙,一个是“小迷糊”,另一个则是“纠错狂魔”呢!

让我先隆重介绍“小迷糊”——“广播”代码。这是一个非常特别的代码。它应用于很多地方,像比如在角色碰撞后,“die”时的加分广播,统计角色分数,区分胜利或失败,播放消息让角色做出相应动作的时候,就必须使用它了。但是它有一个缺点就是如果你不好好去整理“消息渠道”的时候,它就会“把信送错家门”。弄错了“收信”的相应角色,那么整个程序可能会毁于一旦。这真是“由一封信引发的蝴蝶效应”啊!这“小迷糊”看来真是一个“迷糊大王”呢!

好在还有办法来限制小迷糊乱跑。这个“灵丹妙药”就是我们之前提到过的“纠错者”啦。“纠错者”的名字叫“发送(广播名)给(角色)”它是专门用来限制“广播”到处乱跑行为的。它主要用于单个信息发送,角色信息互传等一系列应用的领域,但不常出现。这可能是因为“小迷糊”的邮箱信件稀少的原因吧。

另一个常常弄错的模块领域是“变量”。不要看“变量”其貌不扬,可它却要“逆天”了呢。它是所有代码森林里唯一一支可以“自定义”的种类。它的多少,完全取决于你给它多少变量名称。当然啦!越多名称这小家伙就越“迷糊”。SO,变更数目和清晰度,还是与“迷糊”程度大有干系的。

“给(变量名)的值加(数字)” 可谓是非凡“经典”了,它的数值决定着分数,倒计时总量的多少,稍有不慎,整个程序便可像之前“广播”那样支离破碎了。可偏偏它还没有人来“帮忙”!这才是最要命的地方,又“迷糊”又“无药可救”,使用时要万分小心。

其实,在这些程序的分布中,还有一些其他的程序代码“隐藏”

在其中,那么,它们都是谁呢?让我们再继续认识它们吧!


第四章 “隐形”的函数

    函数是一个非常大的族群,除了我们在之前提到过的“小迷糊”变量在“函数”这个族群里,还有一些不为人知,却对程序做着如树叶一样去衬托他人的“函数卫士”们。让我们一起来认识认识这些“小精灵”们吧!

    首先,需要我们认识的涵数是“随机数”。它并不是一个完整的代码,因此,它不能像其他代码一样独立出来。它必须要嵌在某一个指令里面,然后随着这个代码一起被放进整个程序里,所以,代码里的白色框框的大小与形状便决定了它的命运。像钥匙一样,如果锁孔与钥匙形状不和,那么钥匙是绝不可能进入锁孔的。而“随机数”就是那把钥匙,能够打开哪一扇门,就要看它的形状和作用了。“随机数”主要负责控制角色的动作,告诉角色当随机出示某个数字的时候,它分别应该做出什么回应。“随机数”不仅运用于此,还运用在角色出现场景中时的坐标。它能够告诉角色,如何运行的方向和距离。不仅角色,连在克隆中,也常常能看见它的身影。

    下一个值得(请注意,是值得)介绍的是“当……=……”。

    这是一个典型的计算符号函数。常用于当程序结束时,角色作出的反应。最典型的莫过于报分数时的操作了。仅仅需要这个小符号,就可以统计分数了,是不是非常方便。只可惜它与前面所提的“跳出当前循环”一样,必须与另一个代码配合,它才能在程序中发挥自己的作用。唉!看来程序自身不能独自处理事情真是不太方便呀!

    最复杂的程序莫过于我接下来要介绍的这一位了。这一位小同胞的外形就如同大名鼎鼎的孙悟空一样千变万化。为了适应每一种“锁孔”,它发明了各种各样千变万化的形状。那么它是谁呢?它就是“转……”。

    “转什么”在变量家族里可谓是声名显赫了。不管在什么程序里,总能瞧见它,它的主要任务就是把大数据转化成小数据,然后传送给角色,让角色做出与此数字相应的动作,非常有趣。

    怎么样,这些默默无闻的小精灵们,是不是很有趣啊?默默奉献的精神总是让人感动的,我希望能常在代码中见到它们。

 

第五章 活泼可爱的“动画”们

    “动画”在日常生活中,是给儿童看和一种视频节目,因节目中的图片色彩亮丽,人物生动活泼,故事情节有趣而让我们小孩子喜欢。但当它来到了代码森林里,就变得情况不一样了。它可以让一个角色真正地“动起来”,做出与程序要求相符合的动作。动画在这个代码森林里起到了非常重要的作用。那么,就让我们一起来认识一下它们吧!

    “播放动画”是使用最频繁的一个模块。它的任务也最为简单,就是要求角色在某一个特定的时间里做程序所规定的动作。如果需要让角色重复不停地做同一动作的话,那么,单凭“播放动画”是完全不够的。我们还需要使用另一个模块来帮忙,就是在第二章里提到过的“无限循环”代码了。“播放动画”和“无限循环”在一起的机会非常多,几乎在每一个代码中都可以见到这对好朋友,不论是简单的“星球大战”还是后面难度渐渐加大的“土拔鼠出洞”,这对好朋友我们都能看到它们的身影。

    “播放动画”之后,就是另一个使用较频繁的代码——“停止动画”。这小家伙喜欢跟“播放动画”较劲,还找“播放动画”的茬,给它制造一些小麻烦。它最喜欢干的事情就是把“播放动画”命令角色做的事情统统“取消”,以此来挑衅“播放动画”,惹它生气,而“停止动画”从自己的恶作剧里得到了快乐和满足。“无限循环”虽然是“播放动画”的好朋友,同时也“停止动画”也非常要好。对于两个好朋友的互相拆台,它夹在中间两边劝慰,搞得自己“猪八戒照镜子——里外不是人”了。不过,它确实可以作为两个代码的“和事佬”。在同一个程序里,“无限循环”可以把这两个死对头隔开,这样,两个代码就不会“吵”得太凶了。

     最为懂事的小家伙当属“播放动画几秒”了。这个小家伙不需要别人操心,到了它运作的时候,她就跳出来工作;当不需要它的时候,它又能很自觉地刹住自己的脚步,退到后台等待下一次的任务。而她的“哥哥姐姐”们,也就是“播放动画”和“停止动画”则还要和事佬“无限循环”来调停他们自己的矛盾。真是越大越不懂事呢!因为它这温和的性格,有好多代码都喜欢跟她在一起,像“变量”,“循环”,“声音”“绘画”等等,都特别喜欢与她为伴,和她一起玩耍。看来,性格温和真得非常重要, 是得到好人缘的基础啊!

    

第六章 重要的“外表”

     “外表真得很重要啊!”听了我这句话,你会不会一头雾水呢?平时学校里老师教导我们,心灵美才是真正的美啊!我现在要告诉你的是,在程序编写中,“外表”真得非常重要。如果没有“外表”设定的话,角色的外貌就会彻底失控。

    “外表”在程序中并不指一个事物长得有多好看,而是用来取决角色的大小,说话等,呈现在“观众”面前的“外貌”。因此,我们可以知道,“外表”在程序中的确是非常重要。

看!“说……for……秒”正在向我们走来,它是主要负责管控角色说话时间的一个程序指令。只要角色想说什么而又不想永远定格的话,那么,“说……for……秒”就可以大显身手了。它纵身一跃,轻轻落入程序中,角色就可以不用发愁啦!这样,不管角色的字幕将保持多么久,“说……for……秒”都可以帮助它,让它在字幕保持应有的长度哟!正是因为这样,好多角色都很喜欢跟它在一起,因为如果没有它,它们心里想说的好多话都会说不出来了。看来,即使是简简单单的程序们,也会有“感恩”心的哟!

“改变size”大约是所有“外表”中最为神奇的一个了。它不仅仅可以把角色不断变大,还可以把角色不断变小呢!它通常用于一个角色想要突显出它的重要性时,它就非常有用了。就像在“兔子画画”这一课中,兔子画笔每转一圈,就会扩大一点儿,到了很多很多圈之后,兔子就已经大到即将超出界面范围了。还有就是在体积增大时,如“大鱼吃小鱼”“企鹅大战”中,不断变大的鱼与企鹅,就是“改变size”的杰作了。看来,这真是整个程序大家族里,最最神奇的一个代码了吧。也正是因为它的神奇,所以大家也就都很喜欢它了。

“改变对话框的形状”也是程序中一个十分神奇的操作了。它能够美化角色对话的外框,使形状千变万化的,十分有趣。变出来的对话框有鱼形,爆炸形的,还有“奇宝”标志形的,诸如此类变化多端。但是,如果运用得不好,也会闹出不少笑话的呢!假如你在应该需要温柔说话的时候,用了爆炸形对话框的话,那就非常搞笑了,角色一点温柔的模样都没有了,变成凶巴巴地说话了。你们说,这种“毛病”是不是非常好笑呢?那我们就不可以犯这种“低级”错误啦!

听到这里,你们对“外表”是不是有了更多的理解呢?虽然做人还是要以心灵美为主,但我们也是需要干净整洁的外表,谦逊有礼的待人接物,这是做人的基本礼貌。


  第七章 奇异的“物理”

“物理”在平日生活中,指得是一门从初中开始学习的学科,里面讲解的都是我们生活中的一些现象,如惯力,自由落体,杠杆等物理现象。可是它在代码森林里,却以另一种方式出现了。想要知道“大变身”之后的它,又是长什么样子的吗?那就跟我一起去看看它们吧!

瞧!那就是“物理”中的第一个元素“添加碰撞器”。这位“碰撞器”先生可厉害了。每一个与“碰撞”有关的程序中都有它的身影呢!只要是程序,都免不了这位先生大费周章一番,所有角色与角色的碰撞,都是因它而起,因它而灭,如果没有它,那么,角色与角色之间即便有再大的“火花”,也是不可能碰到一起并引发“战争”的。看来,这位“碰撞器”先生可以算是“战争爱好者”了。虽然在游戏中,它的功劳非常大,但是我仍旧不希望在这个世界上,有一个与“碰撞器”一样的“战争爱好者”。因为,战争对人类的危害实在太大了,会让很多温馨的家庭遭到破坏,无辜的生命被毁灭。

“添加碰撞器”完全相反,在代码森林里,还有另一个“和平天使”——“删除碰撞器”。只要这位代码小姐出马,不管多么激烈的战火,都会在第一时间化为乌有,让整个程序都复归平静与和平的状态。怎么样,是不是很神奇呢?可惜的是,这位小姐有点慢吞吞的性格。每次当她赶到战场的时候,已经有一方“人员”(其实是角色)伤亡惨重了,所以双方在接到“停止”命令时,总有一方快速的消失了,估计是赶回家去“养伤”去了。即便是这样,它的作用仍然很大,就像一位“和平天使”一样,总能在关键的时刻叼着和平的橄榄枝,为角色送来熄火的幸福。

“碰到边缘就反弹”是我们要认识的最后一位关键人物。它的责任就是让人们不要摔出场景去,确保角色待在场景里面,它也可以算是一位“和平天使”了吧,只是它的能力没有那么强,不能完全阻止战争,只能保证角色们的安全,然后等待另的程序来阻止“战争”了。

到这里相信大家对这些“物理”有了一定的了解了,游戏中的战争虽然有趣,但我们还是要做热爱和平的小天使哦。
第八章 鸟语花香的声音世界

   在真实的世界里,到处充满了声音。有清晨小鸟的歌声,有人与人之间友好的交谈声,有令人着迷的音乐声。在编程的虚拟世界里,也可以实现各种声音,那它们又是怎样实现的呢?让我们一起来认识它们吧!

    “播放声音”是兄弟姐妹中最爱唱歌的一个代码精灵,只有一有机会,它就会立刻引吭高歌,为程序的运行“助兴”呢!有了这一个小程序,让角色们“唱歌”就不再是难题了,只需给它们加上一些让它唱歌的前提条件,那么,作为“唱歌大使”的“播放声音”就会使角色歌唱起来。因此,有很多程序都喜欢和它一起玩,比如“播放动画”“向……走……步”等,都是“播放声音”的好朋友。

    而另一个程序“停止一切声音”就不一样了。它非常讨厌热闹的声音,任何细微的声音它都不原意接受,所以,当它出现时,编程世界里立即就变得寂静无声,没有任何一丝的声音,就好像所有的东西都消失了一般,无声无息。我想,假如这位“停止一切声音”精灵出现在现实的生活中,那么,它一定是一个热爱读书的美少女吧!因为,只有爱读书的人才会需要一个非常安静的读书环境。

    “声音库”也是声音世界中一个必不可少的存储仓库。它存放了许许多多的声音。如低音DO到高音DO,各种现实会出现的声音都一应俱全,可以轻松地为各个角色搭配喜欢的声音。作为程序制作者也不必花心思去录制声音,只需到声音库里搜寻合适的声音素材就可以了。这给程序制作者可带来了巨大的便利。

    “当……时候播放……”恐怕要算是最最有趣的一位了,它不用别的精灵帮它附加条件,它自己为自己就设定了播放声音的条件,这太让人省心了。只要你把它放进程序代码中,再加上你想要的声音素材,角色就会按着要求唱起来。

    声音,在现实生活中占据着非常重要的位置。如果没有声音,世界就变得寂静,孤单。人们也无法表达自己的感受,我们也不能倾听来自大自然的鸟语花香。而在编程世界里,声音也是同样重要的,因为有了这些声音程序代码精灵,我们就能听到程序中角色们的声音。

    “你好吗?”

    “你好!”

有了声音,冰冷的编程世界里就有了温度,角色就有了性格,我们就能体会到程序编出的游戏给我们带来的乐趣。编程的世界里有着各种各样有趣的事情,而这些事情的发生和发展都是依靠各个程序代码共同协力创造而成的。每一个代码都是必不可少,非常重要的,即使看起来不那么起眼的小代码,它也能在关键的位置上发挥作用,丰富编程的世界。


第九章  隐藏的功能

我为大家讲述了程序中最为重要的代码模块了。在这一章节里,我想向大家介绍一下这些隐藏着的小功能吧。它们看起来非常地微不足道,可是却非常重要,它们是程序森林不可取代的精灵。

隐藏的小功能在编程学习中占据了很重要的地位,它们可以帮助编程的人们把学习变得更简单,也更容易。它们一共有五个,这次,就让我们一起来认识它们吧!

第一个小功能是“角色档案管理”,在这个功能中,你可以详细的看到角色所在的位置。(也就是坐标),角色的名字等。你不仅可以查阅这些内容,还可以更改角色的名字和他所在的位置,也就是它所在的坐标什么的。你还可以给角色添加声音,让角色“说话”。除此之外,你还可以设置角色的背景呢!

这个小功能所在的位置非常隐蔽,如果不仔细寻找是不会找到它们的。它们呆在界面上方两个并在一起的小图标,看起来有点像扳手的小图标,点开那个图标,你就可以找到上面我说的内容了。这个小功能非常好用,特别是在给角色设置坐标的时候,我们就可以先摆好角色,再回来看角色现在所在的位置了。

“创建角色”是小功能中的第二个,它在课程上颇为常用。因为,如果没有角色那还怎么编写程序呀。后期的编程中,角色大致分为三种:1.自然2.机器人3.按钮。创建角色很好找,看见了吗?它就在那里——角色编程一行后面的那个加号,就是它了。

“演示”是小功能中的第三个,它在课程中也占据着非常重要的地位,主要用来试验程序的效果,他位于程序的右上角,就像视频的播放按钮。有了它,我们就可以提前知道程序做出来的效果,预知一下情况,也方便修改。

“保存与分享”“重命名”这两个好朋友一直在一起,在程序中也不例外。它们都位于程序展示界面中,程序图标上方类似省略号的三个点里面。它们连在一起,很引人注目。编程的最大要点就是:一!定!要!记!得!保!存!不然当你不小心退出,或是电脑突然死机的时候,再次打开程序时,那将是一片空白,你就知道什么叫惨了。曾经做得很完美的程序不复存在,一切都要从头再来,记得我刚开始学习编程时,总是因为忘记保存,而不得不再一次重新编程。唐老师告诉我这个问题对于优秀的程序员来说,是犯了最低级的错误。

所以,编程时,一定要记得保存!一定要记得保存!一定要记得保存!(重要的事情说三遍)。最好还要记得重命名,对每一个版本都要重命名并保存,这样就可以看出程序的每一个版本是如何改善进化而来的。

关于代码森林的精灵们,我就全部介绍完了,编程的世界是丰富多彩的,它们的世界全部由我们自己去创造。我们每个人都能在编程的世界里通过这些代码精灵,建立属于自己的王国,还能带给别人快乐,还在犹豫吗?赶紧加入吧,和代码精灵们一起共创美好的编程世界。