Scratch第三十三讲:钟表小程序-电子钟

网友投稿 2018-12-07 14:17

上一讲讲了指针式的电子钟的小程序,今天跟大家展示一下电子钟的小程序,看看两者有什么不一样的地方。

https://cdn.china-scratch.com/timg/181209/141I55W6-0.gif

这个程序跟之前的指针明细不一样了,指针相对好做,只要计算每个指针当前时间所对应的角度就好。这个需要根据当前时间把对应的数字时间显示出来。

这个程序有几个部分需要注意:

1:一共四个时间数字,需要根据当前的时间,算出每个数字各为多少。然后将四个位置放上不同的数字。

2:绿色的小圈里的是动态闪烁,表示时钟在走。

3:右下角蓝色的地方是根据当前时间判断是上午还是下午。上午时Am,下午是Pm。

https://cdn.china-scratch.com/timg/181209/141I5B18-1.jpg

第一部分比较难做,因为一方面每个数字都有多个可能,比如小时和分钟的个位数字是从0~9,10个选择,分钟的十位是从0~5,7个选择。我们有两种选择:

1:将四位数字分别创造不同的角色,然后根据当前的时间让每一个角色变换造型。这种方法相对简单,麻烦的是每个角色都有很多重复的造型。

2:还有一种方法是只用一个角色,但通过克隆的方式生成另外几个角色,然后每个克隆体显示与当前时间对应的造型。

在这个程序里,我们使用第二种方法。

程序里的三个角色。

https://cdn.china-scratch.com/timg/181209/141I52052-2.jpg

我们看看角色一的造型:

https://cdn.china-scratch.com/timg/181209/141I55917-3.jpg

其实这里面就是十个数字的造型,外加一个空白造型,作为克隆体的母体。(特别注意的是前面9个造型的编号本身就和数字相等,而第十个造型的实际数字是零。所以当你想显示数字0的时候,需要调用的是第10个造型而不是第零个。)

角色三的造型:

https://cdn.china-scratch.com/timg/181209/141I56018-4.jpg

背景的图片:

https://cdn.china-scratch.com/timg/181209/141IA415-5.jpg

先看简单部分的程序:

这是角色三的程序,用来表示上午还是下午,Am或是Pm。

https://cdn.china-scratch.com/timg/181209/141IA2C-6.jpg

这部分角色很简单,就是不断判断变量"Am?",如果这个变量是true,那么就切换成am的造型,如果这个变量是false,那么久切换成pm的造型。(至于这个变量的值如何得来的,会在角色一里进行赋值。)

角色二的程序:

https://cdn.china-scratch.com/timg/181209/141IB0V-7.jpg

角色二就是闪烁,每个一秒钟闪烁一次。

角色一的程序:

https://cdn.china-scratch.com/timg/181209/141I62192-8.jpg

是不是看着很复杂。让我们仔细看看由那几部分组成的。

第一部分:先把当前时间的小时数字取出来,比如现在是11点,那hour1为10位,hour2为个位。分别代表小时的两个数字。其中请大家注意换算,如果当前时间是12点到晚上24点之间则为Pm的时间,需要换算到0~12。这部分程序大家可以自己看一下。(中午12点按照规定属于pm的时间段)

https://cdn.china-scratch.com/timg/181209/141IMJ3-9.jpg

如何取当前时间的具体时和分用下面的命令。

https://cdn.china-scratch.com/timg/181209/141IM917-10.jpg

比较不好理解的是后面两段程序:

https://cdn.china-scratch.com/timg/181209/141II606-11.jpg

这一段程序是执行克隆操作。一个循环执行4次克隆。然后不断循环。这里面有一个clone id的变量,其目的就是要告诉每一个克隆体,其对应的是四个显示数字的哪一个。每次克隆都对应了一个数字的显示。所以这段程序实际上就是根据当前的时间,不断在刷新这四个时间数字(不断在每个显示位置上调用不同的造型)。

再看克隆体内部的程序。

https://cdn.china-scratch.com/timg/181209/141IJE2-12.jpg

当克隆体启动时,先判断clone id,如果id等于1,就是第一位数字显示,那么克隆体切换成对应的造型,就是hour1。但是注意,如果是0的情况下,就不能用变量hour1放在参数里,只能选取造型0,也就是第10个造型。(注意要把克隆的位置先选好,对应在背景上应该放的位置)

https://cdn.china-scratch.com/timg/181209/141II216-13.jpg

当clone id等于2的时候,就是要显示hour2。跟上面程序的方法一样。

https://cdn.china-scratch.com/timg/181209/141IM0C-14.jpg

当clone id=3的时候,那么先取分的十位。这个的方法就是用当前的分钟数除以10,再向下取整。在运算积木里面的下面这个积木可以实现。

https://cdn.china-scratch.com/timg/181209/141IR143-15.jpg

https://cdn.china-scratch.com/timg/181209/141IUQ4-16.jpg

当clone id=4的时候,就是显示分钟的个位,这个可以用当前的分钟数除以10的余数得到。

https://cdn.china-scratch.com/timg/181209/141IT945-17.jpg

同样如果有显示0的时候,需要调用0的造型。

最后这个语句大家可能不太理解,这里的意思是每个克隆体持续的时间,也就是0.3秒,也就是每个克隆体保留的时间是0.3秒。大家可以注意到每次变化时间的时候老的时间还保持了0.3秒。如果这个时间设置太长,大家就会发现时间在变化的时候,显得不顺畅,如果太短,又会发现这几个数字不断再闪烁,所以要设置合理的时长。

https://cdn.china-scratch.com/timg/181209/141IS1c-18.jpg

好了,今天这个程序就跟大家讲解完了,大家如果有兴趣可以把年月日或者秒钟也做进去看看。看看应该怎么设计比较好。

--end--

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