陳新龍
本文的創(chuàng)意來(lái)自一個(gè)Python制作的動(dòng)態(tài)時(shí)鐘,由于相關(guān)知識(shí)點(diǎn)難度較大,我們從中學(xué)習(xí)思路應(yīng)用在Scratch中。
之前我們已經(jīng)在Scratch中編寫過(guò)時(shí)鐘程序,那次是通過(guò)設(shè)置數(shù)字角色變化與偵測(cè)系統(tǒng)時(shí)間實(shí)現(xiàn)的電子表時(shí)鐘。本次實(shí)驗(yàn)我們提高一些難度完成全動(dòng)態(tài)時(shí)鐘,用有素材和無(wú)素材兩種方法顯示時(shí)針、分針、秒針。
這一種做法需要借助素材和背景,時(shí)鐘有表盤和指針,因?yàn)楸肀P上存在刻度和數(shù)字,比起一根線就可以表示的指針難畫不少。表盤的圖片素材,我們可以從網(wǎng)上尋找好看的背景圖,找一個(gè)沒(méi)有指針的鐘表盤,方便我們后邊使用畫筆繪制指針。
導(dǎo)入表盤角色后,我們便可以在Scratch中用畫筆模塊繪制時(shí)、分、秒的指針。首先我們需要?jiǎng)?chuàng)建新的空白角色或?qū)⑿∝埥巧[藏使用。時(shí)針和分針的顏色都是黑色,秒針的顏色是紅色,注意指針的長(zhǎng)度要區(qū)分正確,時(shí)針短粗,秒針最細(xì)最長(zhǎng)。
理清指針間的角度關(guān)系:“秒針:當(dāng)前時(shí)問(wèn)的秒×( 360/60)”“分針:當(dāng)前時(shí)問(wèn)的分×(360/60)+當(dāng)前時(shí)間的秒×( 360/60/60)…‘時(shí)針:當(dāng)前時(shí)問(wèn)的時(shí)×( 360/12)+當(dāng)前時(shí)問(wèn)的分×(360/60/12)”。當(dāng)然指針的繪制算法公式不僅僅存在于一種,大家可以根據(jù)自己理解適當(dāng)?shù)卣{(diào)整算法,畢竟條條大路通羅馬,這里只是給大家提供一種思路,最主要的還是理解秒針轉(zhuǎn)一圈時(shí)其他指針旋轉(zhuǎn)角度的問(wèn)題。
這種方法不使用素材,完全用畫筆繪制一個(gè)時(shí)鐘包括表盤以及指針,實(shí)驗(yàn)中會(huì)用到一些三角函數(shù)的數(shù)學(xué)知識(shí)(正弦、余弦和正切),難度明顯提高了。二角函數(shù)的相關(guān)知識(shí)點(diǎn)如果忘記了,可以上網(wǎng)查閱相關(guān)的資料。
首先繪制表盤圓形,表盤是由1360個(gè)(x,v)點(diǎn)旋轉(zhuǎn)連接起來(lái)的線。R為圓的半徑,那么點(diǎn)的坐標(biāo)可以表示為x=cos*r I y=sin*r;表盤的半徑可以白行調(diào)整,我設(shè)置的大小為150。表盤外圓繪制完成后,開(kāi)始繪制表盤的刻度,360度的圓分為60秒,360/60=6,所以每i6度畫一個(gè)刻度,為了好看和便于觀察還需要每5個(gè)刻度用顏色區(qū)分一下。這里我們?cè)黾恿怂{(lán)色和紅色的效果能更加清晰地看出時(shí)鐘表盤的數(shù)字變化。
控制指針變化的方法我們也與第一種方法做出區(qū)別,用的算法使用到二角函數(shù),大家可以根據(jù)自己的知識(shí)水平選擇。
兩種方法都可以繪制出時(shí)鐘,一種是借助圖案背景繪制,另外一種通過(guò)數(shù)學(xué)計(jì)算和畫筆純繪制,兩種方法難度有差異,大家可以選擇適合自己的方法嘗試。