陈 凯
曾有报道说,一些电脑爱好者根据光电鼠标的工作原理,将其改造成手持扫描仪来使用。当然,这样的改造工作涉及操作系统及设备的知识,超出一般学生的能力范围。但或许,我们可以尝试利用光电鼠标做出其他好玩的“小发明”。本文列出一些简单而有趣的实验,所需要的材料仅仅是USB接口的光电鼠标、USB延长线、橡皮筋、硬纸板、手电筒、电视遥控器以及一个可视化的软件开发环境。大胆想象一下,假如移动的不是鼠标,而是其他什么东西,那就能做出——
遥控绘图板:找一个光束集中的手电筒,距光电鼠标的底部有一定距离,朝着光电鼠标的底部感光元件划过,结果怎么样呢?屏幕上的鼠标移动了。如此一来,就能编写程序,实现用手电筒遥控画画的功能了。以Visual Basic为例,可在窗体的鼠标移动事件中添加画线代码:
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Form1.line –(X,Y)
End Sub
想想看,能用手电筒做出一个视频播放遥控器吗?如果把手电筒换成一个真正的电视遥控器,又会有怎么样的结果呢?
射击游戏机:为什么丰富多彩的电脑游戏可能会抹杀孩子们的想象力呢?原因之一是,电脑游戏太容易获得了,且游戏规则也都已制定得很完善,孩子们根本不需要自己开动脑筋去寻找乐趣。下面的例子,可为孩子们提供了一个自己创造乐趣的机会。用光电鼠标、手电筒以及几行简单的代码,DIY一个射击游戏机。最简单的做法是,取多根橡皮筋连成串并拴住光电鼠标,使其持续摇摆。以VB为例,在窗体上建立文本框,赋Text属性为0,然后在窗体的鼠标移动事件中添加代码:
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Text1.Text = Str(Val(Text1.Text) + 1)
End Sub
Text1.Text中所显示的就是中靶次数,可是这样的代码远不及完美,因为玩家可通过持续的光照来模拟“连发”效果从而得到高分,这就需要大家一起来动脑筋完善代码、细化游戏规则了。
跳跃记录器:做一个厚度恰好与鼠标相同,长度和宽度稍大于鼠标的纸盒子,把鼠标放进纸盒子中然后挂在身上。编写代码,记录下不同时间段鼠标的感应情况,使其成为一个最简单的跳跃记数器。下图描绘的,是笔者通过在窗体中绘制线条,记录下的7次跳跃,线条越是密集,说明震动幅度越大。以Visual Basic为例,需要在Form_MouseMove事件与Timer1_Timer事件中添加代码。代码仅寥寥数行,大家能否自己完成呢?
假如跳跃是均匀的,那么统计跳跃次数的程序代码也相当简单。但也可以由此实验作为深入研究的起点,探讨更有难度的问题。例如,怎么样计算非均匀跳跃次数呢?
大家有没有想出更多好玩的装置呢?例如,无线计步器、条形码输入器,或者红外报警器?未必一定去做,但是值得思考一下可行性与大致的设计思路。(答案在本期找)