极客小将

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

资讯内容

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

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

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

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

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

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

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

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

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

upload/article/images/2021-03-01/4aa41a1d5cd135326ab86ffa19925578.jpg

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

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

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

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

程序里的三个角色。

upload/article/images/2021-03-01/66b116b3500a92b06cbe5389f77f2c7c.jpg

我们看看角色一的造型:

upload/article/images/2021-03-01/00941e675ac266e211fc2b160b9d402c.jpg

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

角色三的造型:

upload/article/images/2021-03-01/307d292d108f078cdef875c7b1862aa7.jpg

背景的图片:

upload/article/images/2021-03-01/8db57074a886f5a18f4ee2761e99e725.jpg

先看简单部分的程序:

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

upload/article/images/2021-03-01/e806d73bf3e3861125fe61042a302857.jpg

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

角色二的程序:

upload/article/images/2021-03-01/5e8466353912d837e44788705dc4ef40.jpg

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

角色一的程序:

upload/article/images/2021-03-01/cb1a150c6f7274033f55a5e2a6994787.jpg

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

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

upload/article/images/2021-03-01/03734aafee6a8a9cba4445e4723dd584.jpg

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

upload/article/images/2021-03-01/221fd394d4a5e9983b550c9f3243f586.jpg

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

upload/article/images/2021-03-01/356c3eff24ed2784581b4bcf16c67b44.jpg

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

再看克隆体内部的程序。

upload/article/images/2021-03-01/733a5cc235aa016b9e6aeae32f4b6dbc.jpg

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

upload/article/images/2021-03-01/162465c5b2261e141861a6870fe0f07b.jpg

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

upload/article/images/2021-03-01/f88f2217ac4d4c5b58517e3a7a57db9c.jpg

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

upload/article/images/2021-03-01/1ad8c1ff73f8869d57410fdba530e391.jpg

upload/article/images/2021-03-01/8c53753a14a464dce0edc8de85c0ac27.jpg

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

upload/article/images/2021-03-01/b596e33f0cb18e34f9abb2a50e6de8ed.jpg

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

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

upload/article/images/2021-03-01/6f6572993514553a83a17da6b3ab6233.jpg

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

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

网友点评

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

在线客服