注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

海天科学工作室

海天相接的蔚蓝下,是不灭的希望

 
 
 

日志

 
 

scratch程序中鼠标的计数问题  

2014-03-28 22:36:15|  分类: scratch |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

       在用scratch编程的过程中,经常会遇到一个计数问题,即如何准确的统计鼠标(或按键)按下的次数,在下面的程序中,我们用变量a来存储鼠标按下的次数。通常我们称变量a为计数器。

       首先来看如下程序:

scratch答疑——鼠标、按键的一个计数问题 - 啊呀老林 - 海天科学工作室

(程序1)

        程序运行发现:
        问题1:当鼠标按一下,计数器a一下子从0变化到4,如果鼠标按得越久,a的值越大,这是什么原因呢?
        原来,这是因为程序没有设定重复执行的时间间隔。当“变量a增加1”执行完以后,又迅速返回到循环的开始位置,即指令“如果"按下鼠标?"”处,这时鼠标还处于按下的状态,于是程序又继续给变量a加1,如此反复,在按下鼠标到放开鼠标的一个时间周期内,变量a可以进行4次加1操作,于是变量a显示的值为4。
        方法1:增加一个“等待1秒”的指
        当变量a加1后,等待1秒钟,再返回到循环的开始位置,由于此时鼠标已经处于放开的状态,所以程序就不再进行加1操作。“等待1秒”指令又称为延时指令,有时为避免鼠标、键盘按一次,而程序反复多次运行,特地在程序中增加一条延时指令。脚本程序如下所示:
 

scratch答疑——鼠标、按键的一个计数问题 - 啊呀老林 - 海天科学工作室

(程序2)

        程序运行又发现:
        问题2:在按住鼠标不放的时候,变量a还是会一直在计数,不断进行加1操作,而实际鼠标按下的次数才1次。
        这又是什么原因呢?原来,上面的程序只有判断“鼠标按下”,并没有判断“鼠标松开”,所以当间隔时间1秒后,程序判断鼠标处于“按下”的状态,于是又进行了变量a的加1操作。
        方法2:加一个判断鼠标松开的指令“按下鼠标?不成立” ,并做上标记。
      作标记的方法是用一个变量k来表示,k的值为0,表示鼠标松开,k的值为1,表示鼠标按下。 变量k的值只有两种:“0和1“,很象一个开关,有时又称为“开关变量”。变量k又象是一把锁,当它打开的时候,允许变量a进行计数;当它锁上的时候,变量a就不能计数了。 脚本程序如下所示:

scratch答疑——鼠标、按键的一个计数问题 - 啊呀老林 - 海天科学工作室

(程序3)

       (1)如果“k=0”并且检测到“鼠标按下”,则变量a加1,同时变量k设定为1,表示鼠标按下了。 
       (2)如果“按下鼠标?不成立”的条件不能满足,表示鼠标没有松开,此时变量k保持为1。
       (3)如果“按下鼠标?不成立”的条件满足,表示鼠标松开,这时变量k设定为0。
        如上所述,方法1是一种简单的处理办法,通常在编写程序的过程中,如果会出现类似的计数问题的话,只需要加一条等待指令就可以了。但是如果要准确的计数,还要考虑到鼠标放开的情况,则需要使用方法2程序了。
         方法3:问题到这里就结束了吗?经过和猫友汇群新疆 %Lee上海-格初-K等网友一起讨论,我们又得到下面这样一个程序4,如下所示
 scratch程序中鼠标的计数问题 - 啊呀老林 - 海天科学工作室 
         我们发现,把开关变量K去掉,使用了一条等待指令,也能够准确的完成鼠标的计数功能。这条指令的意思是在“鼠标松开”之前一直处于等待状态,程序不再往下执行,这样一来,这个鼠标计数程序又变得更简单了。
         到此,我们看到,一个鼠标计数问题的解决方法可以有好几种,从简单到复杂,又从复杂到简单,这和数学的“一题多解”思想是一样的。在scratch编程中,对一个问题的解决方法也应该要提倡一题多解的思路,要敢于去寻找问题的多种解决方案,这样才能达到培养创新思维的目的。
                                                                                                                                             2014年3月30日  
  评论这张
 
阅读(1154)| 评论(1)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017