資訊內(nèi)容
Scratch第三十三講:鐘表小程序-電子鐘
上一講講了指針式的電子鐘的小程序,今天跟大家展示一下電子鐘的小程序,看看兩者有什么不一樣的地方。
這個(gè)程序跟之前的指針明細(xì)不一樣了,指針相對好做,只要計(jì)算每個(gè)指針當(dāng)前時(shí)間所對應(yīng)的角度就好。這個(gè)需要根據(jù)當(dāng)前時(shí)間把對應(yīng)的數(shù)字時(shí)間顯示出來。
這個(gè)程序有幾個(gè)部分需要注意:
1:一共四個(gè)時(shí)間數(shù)字,需要根據(jù)當(dāng)前的時(shí)間,算出每個(gè)數(shù)字各為多少。然后將四個(gè)位置放上不同的數(shù)字。
2:綠色的小圈里的是動態(tài)閃爍,表示時(shí)鐘在走。
3:右下角藍(lán)色的地方是根據(jù)當(dāng)前時(shí)間判斷是上午還是下午。上午時(shí)Am,下午是Pm。
第一部分比較難做,因?yàn)橐环矫婷總€(gè)數(shù)字都有多個(gè)可能,比如小時(shí)和分鐘的個(gè)位數(shù)字是從0~9,10個(gè)選擇,分鐘的十位是從0~5,7個(gè)選擇。我們有兩種選擇:
1:將四位數(shù)字分別創(chuàng)造不同的角色,然后根據(jù)當(dāng)前的時(shí)間讓每一個(gè)角色變換造型。這種方法相對簡單,麻煩的是每個(gè)角色都有很多重復(fù)的造型。
2:還有一種方法是只用一個(gè)角色,但通過克隆的方式生成另外幾個(gè)角色,然后每個(gè)克隆體顯示與當(dāng)前時(shí)間對應(yīng)的造型。
在這個(gè)程序里,我們使用第二種方法。
程序里的三個(gè)角色。
我們看看角色一的造型:
其實(shí)這里面就是十個(gè)數(shù)字的造型,外加一個(gè)空白造型,作為克隆體的母體。(特別注意的是前面9個(gè)造型的編號本身就和數(shù)字相等,而第十個(gè)造型的實(shí)際數(shù)字是零。所以當(dāng)你想顯示數(shù)字0的時(shí)候,需要調(diào)用的是第10個(gè)造型而不是第零個(gè)。)
角色三的造型:
背景的圖片:
先看簡單部分的程序:
這是角色三的程序,用來表示上午還是下午,Am或是Pm。
這部分角色很簡單,就是不斷判斷變量"Am?",如果這個(gè)變量是true,那么就切換成am的造型,如果這個(gè)變量是false,那么久切換成pm的造型。(至于這個(gè)變量的值如何得來的,會在角色一里進(jìn)行賦值。)
角色二的程序:
角色二就是閃爍,每個(gè)一秒鐘閃爍一次。
角色一的程序:
是不是看著很復(fù)雜。讓我們仔細(xì)看看由那幾部分組成的。
第一部分:先把當(dāng)前時(shí)間的小時(shí)數(shù)字取出來,比如現(xiàn)在是11點(diǎn),那hour1為10位,hour2為個(gè)位。分別代表小時(shí)的兩個(gè)數(shù)字。其中請大家注意換算,如果當(dāng)前時(shí)間是12點(diǎn)到晚上24點(diǎn)之間則為Pm的時(shí)間,需要換算到0~12。這部分程序大家可以自己看一下。(中午12點(diǎn)按照規(guī)定屬于pm的時(shí)間段)
如何取當(dāng)前時(shí)間的具體時(shí)和分用下面的命令。
比較不好理解的是后面兩段程序:
這一段程序是執(zhí)行克隆操作。一個(gè)循環(huán)執(zhí)行4次克隆。然后不斷循環(huán)。這里面有一個(gè)clone id的變量,其目的就是要告訴每一個(gè)克隆體,其對應(yīng)的是四個(gè)顯示數(shù)字的哪一個(gè)。每次克隆都對應(yīng)了一個(gè)數(shù)字的顯示。所以這段程序?qū)嶋H上就是根據(jù)當(dāng)前的時(shí)間,不斷在刷新這四個(gè)時(shí)間數(shù)字(不斷在每個(gè)顯示位置上調(diào)用不同的造型)。
再看克隆體內(nèi)部的程序。
當(dāng)克隆體啟動時(shí),先判斷clone id,如果id等于1,就是第一位數(shù)字顯示,那么克隆體切換成對應(yīng)的造型,就是hour1。但是注意,如果是0的情況下,就不能用變量hour1放在參數(shù)里,只能選取造型0,也就是第10個(gè)造型。(注意要把克隆的位置先選好,對應(yīng)在背景上應(yīng)該放的位置)
當(dāng)clone id等于2的時(shí)候,就是要顯示hour2。跟上面程序的方法一樣。
當(dāng)clone id=3的時(shí)候,那么先取分的十位。這個(gè)的方法就是用當(dāng)前的分鐘數(shù)除以10,再向下取整。在運(yùn)算積木里面的下面這個(gè)積木可以實(shí)現(xiàn)。
當(dāng)clone id=4的時(shí)候,就是顯示分鐘的個(gè)位,這個(gè)可以用當(dāng)前的分鐘數(shù)除以10的余數(shù)得到。
同樣如果有顯示0的時(shí)候,需要調(diào)用0的造型。
最后這個(gè)語句大家可能不太理解,這里的意思是每個(gè)克隆體持續(xù)的時(shí)間,也就是0.3秒,也就是每個(gè)克隆體保留的時(shí)間是0.3秒。大家可以注意到每次變化時(shí)間的時(shí)候老的時(shí)間還保持了0.3秒。如果這個(gè)時(shí)間設(shè)置太長,大家就會發(fā)現(xiàn)時(shí)間在變化的時(shí)候,顯得不順暢,如果太短,又會發(fā)現(xiàn)這幾個(gè)數(shù)字不斷再閃爍,所以要設(shè)置合理的時(shí)長。
好了,今天這個(gè)程序就跟大家講解完了,大家如果有興趣可以把年月日或者秒鐘也做進(jìn)去看看。看看應(yīng)該怎么設(shè)計(jì)比較好。
聲明:本文章由網(wǎng)友投稿作為教育分享用途,如有侵權(quán)原作者可通過郵件及時(shí)和我們聯(lián)系刪除
