最新消息:380元/半年,推荐全网最具性价比的一站式编程学习平台码丁实验室

Scratch模拟时钟

Scratch 少儿编程 3679浏览 0评论

友情提示:380元/半年,儿童学编程,就上码丁实验室

简   介

这里     使用scratch来模拟时针和分针的运动

 

 

Scratch模拟时钟

     01 最终效果视频

Scratch模拟时钟

 

 

Scratch模拟时钟 

     02 背景知识

Scratch模拟时钟

        对于小朋友来说,时钟的重点是分清时针和分针在表盘上的划分,以及相互之间的变换关系。

 

Scratch模拟时钟
1F
角度

        时针和分针的转动涉及角度,所以对角度概念的理解很重要。角度可以理解为一条直线沿着直线上的一点转动的夹角。但是,实际上我并没有这样解释。只是拿手沿着手腕转动来表示角度的概念。在了解角度概念之后,需要解释转一圈是360度。实际解释方面更简单,让小朋友转了一圈,告诉这一圈就是360度。在有一圈是360度的概念之后,就是把一圈进行平均划分,比如一圈需要以同样大小的角度2次转完,那么每次是转多少度(答180度),如果4次呢(答90度)。

Scratch模拟时钟
2F
时针和分针

        时针从0到12 (0和12重合),把一圈分成了12份,每份要转动30度。分针从0到60(0和60重合),把一圈分成60份,每份要转动6度。此外,时针和分针的对应关系是分针转60份,时针需要转1份。这是比较粗线条的控制方法,细线条的控制方法是,分针每转一份(6度),时针需要转0.5度(即 30度/60)。

Scratch模拟时钟 

     03 设计思路

Scratch模拟时钟

 

Scratch模拟时钟
1F
功能1:增加小时和分钟

        本来这个时钟的设计目的就是模拟时针和分针,从而在视觉上感受时针和分针的运动。了解时间的加减法就是小时和小时相加,分钟和分钟相加,分钟到60之后变0,并向小时加1。所以功能上就实现三个按钮,分别用于增加小时数,增加分钟数以及同时增加小时和分钟数。

Scratch模拟时钟
2F
功能2:显示时间的变化关系

        同样是为方便小朋友了解时间的计算,因此显示出增加前的时间,增加的时间以及增加后的时间。从而使得小朋友在视觉上了解时针分针运动的概念之后,使用数字精确的验证时间上的计算。

Scratch模拟时钟
3F
功能3:显示当前时间

        这个功能算式赠送功能,实现角度上来说和同时增加小时和分钟的按钮差不多,只不过增加的小时和分针不需要手动输入,只是调用函数直接获得系统当前的小时和分钟数即可。

 

 

Scratch模拟时钟 

     04 代码实现

Scratch模拟时钟

 

Scratch模拟时钟
1F
表盘

        表盘由三部分组成,包括圆形的背景,以及小时和分钟的指示。其中,小时用圆圈表示,分钟使用短线表示。小时和分钟的指示都是动态生成的。原理和时针、分针转动的原理是一样的。以小时的指示为例,转动12次,每次转动30度,并且留下一个自身的印记(stamp)。

 

Scratch模拟时钟

Scratch模拟时钟

 

Scratch模拟时钟
2F
增加小时和分钟按钮

        介绍增加小时和分钟的逻辑之前,先介绍一下使用的变量。一共使用了6个变量,beforeHour,beforeMinute,plusHour,plusMinute,Hour和Minute。分别代表了增加之前的小时和分钟,要增加的小时和分钟,以及增加后的小时和分钟。数学运算关系是:(beforeHour, beforeMinute)+(plusHour, plusMinute)=(Hour, Minute)。其中,beforeMinute和plusMinute的和如果大于60,会导致Hour数增加。

 

Scratch模拟时钟

增加小时按钮

        涉及到+Hour按钮和时针两个精灵对象。其中按钮调用了ask函数来从用户获得小时数的输入,并通过answer参数把返回值赋值给plusHour变量,并发送hournumber消息通知时针精灵对象。时针精灵对象响应hournumber这个消息,执行plusHour次循环,并且在每一次循环中,把Hour变量加一,并且把时针精灵对象转动30度。(见下面两幅图)

 

Scratch模拟时钟

Scratch模拟时钟

 

增加分钟按钮

增加分针按钮的实现跟增加小时按钮的实现思路差不多,只不过要多了一些时针的转动和分针转动的联动(即分针转一次6度,时针需要同时跟着转0.5度),以及分针转一圈的时候Hour变量需要增加1。

在+Minute按钮精灵对象中,同样调用ask函数获得分钟数的输入,通过answer参数把输入值赋值给plusMinute变量,然后再发送minutenumber消息通知分针精灵对象。

在分针精灵对象中,执行plusMinute次循环。在每一次的循环中,把分针精灵对象转动6度,把Minute值加1,同时发送Hourchangewithminute消息让时针精灵对象转动0.5度,同时在循环中判断Minute的值是否为60,如果到达了60,则需要把Minute值设置为0的同时发消息通知时针精灵对象让其把Hour值加1。

 

Scratch模拟时钟

Scratch模拟时钟

Scratch模拟时钟

 

增加小时和分钟的按钮

同时增加小时和分钟的按钮的实现也就是调用了两次ask函数分别获得小时数和分钟数,并前后发送hournumber消息和minutenumber消息来分别通知小时精灵对象和分钟精灵对象进行响应。

Scratch模拟时钟

 

Scratch模拟时钟
3F
显示当前时间

        这个功能的实现和同时增加小时和分钟的按钮实现类似,只不过不是调用ask函数来获得输入,而是直接使用sensing页中的current参数来获得当前系统的小时和分钟数值。

Scratch模拟时钟

Scratch模拟时钟

您必须 登录 才能发表评论!