极客小将

您现在的位置是:首页 » scratch编程资讯

资讯内容

初识Scratch--让火箭再飞一会

极客小将2020-11-20-
      小朋友们的玩具收纳柜里不乏各种会跑的汽车、会飞的飞机,但是“能发射”的火箭就比较少见了。和许多小朋友一样,4岁男孩Ray是一个小航空迷,最近一直尝试用各种积木搭建火箭和发射中心。为了满足Ray想让火箭飞起来的想法,Ray妈带儿子第一次体验了Scratch编程。

      小朋友们的玩具收纳柜里不乏各种会跑的汽车、会飞的飞机,但是“能发射”的火箭就比较少见了。和许多小朋友一样,4岁男孩Ray是一个小航空迷,最近一直尝试用各种积木搭建火箭和发射中心。为了满足Ray想让火箭飞起来的想法,Ray妈带儿子第一次体验了Scratch编程。

      本文适合低年级和学龄前小朋友由家长陪伴实践,也适合高年级的小朋友阅读后独立实践。

upload/article/images/2020-11-20/e070365774a0f04b4fa5fee55d6b8be3.jpg

      “质子、战神、长征……” 一大早Ray从睡梦中醒来,兴奋地给妈妈讲梦里乘坐火箭运送的航天器到空间站的奇妙旅行。

       刚吃完早饭,Ray便坐到自己的“小基地”,开始又一次用乐高积木搭空间站。

       空间站搭好了,Ray却愁眉不展。

      “搭建空间站遇到什么问题了吗?”妈妈问。

      “空间站搭好了,可是我需要有一个会飞的火箭把航天器送到空间站。会飞的火箭要用什么搭呢?”Ray问。

      “想不想试试用Scratch积木组装一个会飞的火箭?”妈妈笑着问。

      “当然当然!可什么是Scratch积木?”Ray不解的问。

      “Scratch是一种‘电子积木’,通过这种积木可以控制电脑实现特定的功能,解决我们遇到的问题,或者实现我们想要的效果。”妈妈解释道。

      “太好了!我可以发射火箭了!”Ray欢呼道。

      “可是怎么实现火箭发射的效果呢?” 高兴过后,Ray意识到关键的问题还不知道怎么解决。

      “火箭发射其实是火箭从地球表面到太空的一个运动过程。我们可以通过改变火箭的位置来实现火箭发射的效果。”妈妈解释道。

      “对对,火箭应该是从地面向天上运动的。”Ray很高兴已经有了解决方案。

      “是的,如果要在一个平面上模拟火箭发射的话,我们需要改变火箭沿竖直方向的坐标。在Scratch中,我们可以通过改变火箭这个角色的y坐标来实现它从地面发射到太空的效果。”妈妈进一步解释道,虽然这个解释对小朋友来说难免比较困惑。

       看着Ray似懂非懂的表情,妈妈打开了电脑上的Scratch软件,说:“与其纸上谈兵,不如实际操作下。”

       Ray好奇地坐在妈妈旁边等待发射属于自己的火箭。

upload/article/images/2020-11-20/e070365774a0f04b4fa5fee55d6b8be3.jpg

      打开Scratch后,每次新建一个作品,Scratch都会添加一个默认的角色:小猫。如果不需要这个角色,可以点击右下角角色区小猫右上角的删除按钮将其移除,如下图。

upload/article/images/2020-11-20/2910bfb0b19d23af48accd470373bcaa.jpg

      清空角色后,需要添加一个火箭的角色,此时需要点击右下角角色区的添加按钮增加一个新的角色,如下图。

upload/article/images/2020-11-20/e1641c11820713e171ef5e4d5b282155.jpg

      角色可以使用Scratch自带的Rocketship(如下图),也可以自己制作一个火箭图片作为火箭的角色。Ray妈不擅长p图,这里使用Scratch自带的Rocketship。

upload/article/images/2020-11-20/ee229dcf264b7234ef79be8c4ec05364.jpg

       角色准备好了,接下来需要给角色设置指令,也就是给它编程。

       正如现实中的火箭发射需要等待总设计师一声“发射”的指令火箭才会开始发射一样,在程序的世界里,任何一段程序的执行也需要一个事件来触发。这里,我们从事件类积木中选择积木upload/article/images/2020-11-20/64fbe2c8a71886ed3b139ba4cbe791e2.jpg作为程序的入口。如下图,将积木upload/article/images/2020-11-20/64fbe2c8a71886ed3b139ba4cbe791e2.jpg拖到代码区。

upload/article/images/2020-11-20/c3da151f7f7ccc51e985222b95e56d84.jpg

      火箭发射是一个从下向上的运动过程,所以可以将右上角舞台区的火箭拖到舞台的正下方,或者使用运动类积木中的积木upload/article/images/2020-11-20/83ddd95fee21e9f59e05f176babbd9e8.jpg设置火箭的初始位置位于舞台区正下方,如下图。

upload/article/images/2020-11-20/bf2f0f22ef2f0f777469c5149ff52fc7.jpg

       接下来,就可以通过使用运动类积木控制火箭在屏幕上的移动时间和结束时的位置来模拟火箭发射的过程了。最简单的方式,让火箭在0.1秒内从当前位置移动到(0,80)。从运动类积木中选取积木upload/article/images/2020-11-20/a709a30b364cdab20ccc40d5d2d25937.jpg,将其拖到代码区,如下图。其中移动的时间和终点坐标是可以任意设置的。(Scratch坐标范围:x坐标:-240~+240,y坐标:-180~+180)

upload/article/images/2020-11-20/763d5c57b56ecb389433e0bfbbb87669.jpg

       到这里,已经可以体验火箭发射的最简单的效果了。点击右上角舞台区的绿旗按钮试试吧!

       是不是已经看到火箭“嗖”的一下飞上天的效果了?

       不过问题也随之来了,再次点击绿旗按钮,火箭纹丝不动!这可怎么办呢?难道这也像真实的火箭那样发射一次就报废吗?

       别担心,真实的火箭有一些是可以回收利用的,我们也可以给火箭增加一套恢复逻辑。如下图,使用事件类积木里的积木upload/article/images/2020-11-20/d35608460ce7eb11151d6859fdc47d94.jpg作为恢复功能的启动键,再使用运动类积木里的积木upload/article/images/2020-11-20/83ddd95fee21e9f59e05f176babbd9e8.jpg将火箭位置还原到初始状态,此时按下空格键,试试火箭有什么变化吧。

upload/article/images/2020-11-20/f0ef6b0f4ef5ddedbb2749ef77039391.jpg

       火箭是不是妥妥的回到了等待发射时的位置?

upload/article/images/2020-11-20/e070365774a0f04b4fa5fee55d6b8be3.jpg

       到这里,我们已经实现了最基本的火箭发射和还原的功能。但显然,这个效果还比较“简陋”。Ray小朋友已经大叫了:“妈妈,还没有地球和太空呢!”

       接下来,让我们添加一个太空的背景吧。

      点击右下角“添加背景”按钮选择一个背景,这里使用了Scratch自带的Stars背景。

upload/article/images/2020-11-20/8dcd2082ae441af537a9ef9fc61fff26.jpg

       再使用Scratch自带的Earth角色(也可以自制地球图片,后面将介绍如何添加自定义角色),调整地球的大小和位置,并将火箭拖到地球的上面,整个场景变得更丰富了。

upload/article/images/2020-11-20/d99fdc409c1831278d6bb1710ee0d16d.jpg

      “妈妈,还有问题!”Ray还是不太满意。“火箭发射之前是没有火的,初始状态不对!而且火箭发射过程中下面的助推器是要脱落的!”

       果然!一张火箭图片模拟发射过程还真是漏洞百出。

       “那你觉得我们应该怎么解决这个问题呢?”妈妈故意引导Ray来寻找解决方案。

       “应该用不同的图片。没有火的火箭图片,完整的有火的火箭图片,还有助推器脱落后的火箭图片。”Ray信心满满地说。

       妈妈点点头:“好,那我们来准备下这几张图片。”

       Scratch有一个造型区,可以针对每个角色调整它的造型,例如添加一个新的造型、去掉一个造型、或者修改某个造型。造型区左上角是这个造型的名字,可以在外观类积木中选择。

      通过修改Rocketship的现有造型,一组火箭发射过程中切换的造型准备好了。

 “现在我们可以通过改变火箭的位置和造型,来实现更逼真的火箭发射效果了。”妈妈说。

       在外观类积木中选取积木upload/article/images/2020-11-20/00f238838ee1c2a9533a1e59f5d41858.jpg,并通过点击该积木右边的小三角选择需要展示的造型,如下图,每运动一段距离变换一个造型,即实现了助推器脱落的效果。这里需要根据火箭发射的效果调整运动积木的参数,小朋友们可以体验一下调试的过程。同时,当按下空格键还原时,除了需要还原位置,还需要还原火箭的造型。

upload/article/images/2020-11-20/36e72dbb3b45bf54d40c8710243fcdb9.jpg

       火箭发射的效果改善了,可是Ray小朋友仍然皱着眉头:“还差一个空间站,现在没有空间站和航天器对接。需要再添加一个角色!”

       妈妈点点头,看来,Ray已经理解了Scratch中“角色”的含义。

       Scratch自带的角色中没有空间站,于是从网上找了一张空间站的图片并新增了一个空间站的角色。鼠标悬浮在右下方角色区的“添加角色”按钮上,会弹出一个菜单,点击菜单最上方的“上传角色”按钮即可上传一张本地图片作为一个新的角色。

upload/article/images/2020-11-20/baf6c5373b91dd54c5539fb42ace525b.jpg

       将空间站拖动到适当的位置,使得火箭助推器脱落后航天器和空间站正好对接上。

       “再看看,还有没有什么可以改进的地方?”妈妈问。

       “有一点,火箭还没发射的时候,应该显示地球,不显示空间站;火箭发射到太空后,应该显示空间站,不显示地球。” Ray若有所思的说。

       “对,要实现更真实的效果,还需要控制好时序。我们可以给地球和空间站这两个角色加上外观积木,控制它们在适当的时候显示和隐藏。”妈妈表示赞同。

       下面两张图分别是地球和空间站的代码,通过延时逻辑控制了这两个角色的显示和隐藏,并配上了恢复逻辑。

https://cdn.china-scratch.com/timg/191122/1441422414-21.jpg

https://cdn.china-scratch.com/timg/191122/1441431215-22.jpg

       看似已经完成了模拟火箭发射的过程,可是Ray小朋友还是若有所思:“我们应该再增加一个倒计时的功能,火箭发射前会倒计时的。”

       没问题,让我们再增加从1-5五个数字角色吧。将这些角色拖动到要展示的位置,并通过外观类积木和控制类积木设置显示和隐藏的时机,便可实现“5、4、3、2、1”的倒计时效果。在每个数字显示时使用声音类积木中的积木https://cdn.china-scratch.com/timg/191122/1441433957-23.jpg增加一段音效,效果更好。

https://cdn.china-scratch.com/timg/191122/1441435348-24.jpg

https://cdn.china-scratch.com/timg/191122/1441432101-25.jpg

https://cdn.china-scratch.com/timg/191122/1441442042-26.jpg

https://cdn.china-scratch.com/timg/191122/14414442M-27.jpg

https://cdn.china-scratch.com/timg/191122/1441441610-28.jpg

       倒计时功能实现了,但是倒计时模块和火箭发射的过程联调时又遇到了问题:倒计时还没有结束,火箭已经发射出去了,这个时序有问题!

       在火箭的角色上增加一个控制类积木延时等待5秒后再启动发射的过程,问题解决了。同时还可以给火箭发射也配上一段音效,如下图。

https://cdn.china-scratch.com/timg/191122/144144B07-29.jpg

       别忘了同时修改地球和空间站的代码,为它们的显示和隐藏调整时机。

https://cdn.china-scratch.com/timg/191122/14414HZ2-30.jpg

https://cdn.china-scratch.com/timg/191122/14414LK3-31.jpg

       “哦!我用电子积木实现了火箭发射!”Ray兴奋极了。

       “不止是实现了模拟火箭发射,你还发现了几个问题并解决了这些问题,这才是更大的收获。”妈妈笑着说。

       Ray反复操作着绿旗按钮和空格键,陶醉在自己“发射的”火箭里。

       让火箭再飞一会吧!

upload/article/images/2020-11-20/e070365774a0f04b4fa5fee55d6b8be3.jpg

      通过制作会飞的火箭,小朋友们可以对Scratch编程有一个初步的认识。这种拖拽式的电子积木很适合孩子们展示自己的想法。在通过Scratch编程实现火箭发射的过程中,孩子们会接触到并尝试理解如何用数学模型抽象火箭发射的过程。对于低年级和学龄前的小朋友,这可能还仅仅是一个模糊的概念,不过没关系,多听到看到一个概念也会在他们的小脑袋瓜中激起涟漪。同时,在模拟火箭发射的过程中遇到的问题,也会激发孩子们去寻找解决方案。遇到问题、分析问题、解决问题,这比单纯学会使用一个工具更有意义。

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除

网友点评

共有5条评论来说两句吧...

在线客服