官术网_书友最值得收藏!

二、動手練:一個走動的鐘表

(一)實驗目的

做一個走動的鐘表,秒針每秒轉動一格,分針每分轉動一格,時針每小時轉動一格。

(二)基本思路

1)鐘表的表盤是固定不變的,可以設置成背景。

2)秒針、分針、時針要走動,我們把它們定義成3個角色,通過轉換方向來實現走動。

3)秒針、分針執行“重復”操作,每秒循環一次,更改角度。因為秒針每60秒走一圈,而一圈是360°,所以秒針的方向是“當前是第幾秒÷60×360°”;分鐘每60分轉動一圈,因此分針的方向是“當前是第幾分÷60×360°”。

4)時針執行“重復”操作,每分鐘循環一次,更改角度。因為時針12小時走一圈,所以時針的方向是“當前是第幾小時÷12×360°”。不過這樣時針每小時才更新一次,走得“咯噔咯噔”的。為了更順暢一些,我們每分鐘更新一下時針的角度,把方向變成“當前是第幾小時÷12×360°+當前是第幾分÷60×30°”。

5)當前的時間可以用“偵測”里的“當前時間的秒”等來獲得。

(三)編程步驟

(1)背景繪制

Scratch系統沒有鐘表表盤,我們只好自己繪制了。我們把鼠標放在背景設置區右下角的048-1上,然后在彈出的菜單條里選擇畫筆048-2,即可開始繪制背景。

我們畫一個圓圈表示表盤,然后在圓圈上標上1,2,3,…,12各個數。注意,背景繪制區中有一個帶十字的圈圈048-3,表示繪制區的中心;我們一定得保證圓圈的圓心在這個中心,如圖2-7所示。

048-4

圖2-7 “走動的鐘表”實驗里在背景區繪制表盤

(2)角色繪制

Scratch系統也沒有現成的秒針、分針和時針,需要自己繪制。我們把鼠標放在角色設置區右下角的048-5上,然后在彈出的菜單條里選擇畫筆048-6,即可開始繪制角色了。

我們畫一條紅色細橫線表示秒針。注意:一定要以角色繪制區里的十字線為起點開始畫;這個點是角色的“中心點”,角色旋轉時是圍繞這個中心點旋轉的。分針和時針的繪制方法與此類似。

卜老師提示我們,Scratch2.0版本中可以指定角色的“中心點”,而在Scratch 3.0中,以十字線作為所繪制角色的中心點。

(3)角色的腳本

現在我們有三個角色,下面得為每個角色單獨寫一個腳本(見圖2-8)。

049-1

圖2-8 秒針的腳本(左)和分針的腳本(右)

在這里,我們讓秒針角色執行“移到最前面”,讓時針角色執行“移到最后面”,這樣秒針就不會被時針擋住啦!這里我們使用了“重復執行”積木,后面我們會詳細介紹。

(四)實驗結果

現在我們點擊一下綠旗,就能看到一個精美的鐘表啦!圖2-9是我的程序畫出的時鐘,秒針每秒走一格,很好看吧!

049-2

圖2-9 時針的腳本(左)和實驗結果(右)

(五)遇到的bug及改正過程

bug:一開始我們畫秒針時,沒從十字線中心開始畫,結果秒針旋轉時,是“偏心旋轉”,很不好看。

改正:后來改成從十字線中心開始畫,就好了。

(六)思考與延伸

倒著走的時鐘怎么寫程序呢?

主站蜘蛛池模板: 绥宁县| 台州市| 克山县| 托克托县| 昭平县| 正定县| 万荣县| 云浮市| 肥西县| 南康市| 旺苍县| 阳春市| 岫岩| 朝阳区| 上杭县| 图木舒克市| 商城县| 特克斯县| 利津县| 平山县| 永康市| 沙田区| 罗源县| 安宁市| 鹰潭市| 织金县| 华安县| 鸡西市| 屯留县| 凤庆县| 武清区| 北京市| 深水埗区| 嘉义市| 樟树市| 全椒县| 宜州市| 庄河市| 蒙自县| 固安县| 合阳县|