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