二、动手练:一个走动的钟表

(一)实验目的

做一个走动的钟表,秒针每秒转动一格,分针每分转动一格,时针每小时转动一格。

(二)基本思路

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:一开始我们画秒针时,没从十字线中心开始画,结果秒针旋转时,是“偏心旋转”,很不好看。

改正:后来改成从十字线中心开始画,就好了。

(六)思考与延伸

倒着走的时钟怎么写程序呢?