首页 接线图文章正文

小叮当也战江湖—VB程序设计实例七日谈(四)

接线图 2024年04月29日 12:23 259 admin

第四天、打字练习程序

  小叮当:我说小蘑菇呀,前几分钟之前还看你在编程序,怎么现在又开始玩游戏了?
  小蘑菇:都是昨天定时程序的作用呀,我现在是编程10分钟,游戏50分钟,这样劳逸结合,安排的不错吧。
  小叮当:有你这么安排的吗?整个就是在浪费时间!别玩游戏了,今天教你一些什么呢?
  小蘑菇:最好是寓教于乐的程序最好,比如一边玩游戏一边学习的。
  小叮当:给我出难题?那就教你一个寓教于乐的程序,来制作一个打字练习程序怎么样?
  小蘑菇:真的?也好,我先看看再说。
  小叮当:OK,还是老规矩,先创建一些控件再说。

  1、新建一个工程,将Form1的Caption属性修改为“打字练习”,同时将MaxButton和MinButton两个属性都设置为“False”,这样在程序运行之后可以取消右上角的最小化和最大化按钮。

  2、添加一个Frame控件,将它的Caption属性设置为空,并且将BorderStyle属性设置为“0-None”,然后在这个Frame中添加1个Label控件。

  3、在Form1窗口中添加4个Label控件,其中两个Label控件的Caption属性分别设置为“得分”和“剩余”,另外两个Label控件的BackStyle和BorderStyle属性均设置为“1-Opaque”和“1-Fixed”,这样将使得它们以3D立体形式显示出来,最后分别将这两个Label控件的Caption属性设置为“0”和“200”。

  4、在Frame区域中再添加一个Label控件。

  5、在Form1窗口中添加一个Command Button控件,将它的Caption属性更改为“开始”。

  6、添加三个Timer控件,并将它的interval属性分别设置为100、1000和100。


  所有控件添加设置完成后应该如图所示。

  小蘑菇:看起来好复杂的样子,代码编写部分是不是也很繁琐?
  小叮当:说难不难,说简单也不简单。我们的目的是通过嵌套在Frame中的两个Label控件来随机显示字母,然后通过键盘输入字母,由程序检验输入的字母和显示的字母是否一样,如果一样则说明正确,可以加分,否则说明输入错误。其实最关键要把握住编程的思想,这个说起来就话长了,还是看看具体的源代码怎么写吧。

  1、双击Form1窗口,并选择“通用”对象,输入下面的通用代码:

  Option ExplICit
  Dim score As Integer  /定义变量
  Dim speed As Integer  /定义变量

  2、编写init子程序(用于设置第一个出现的字母)

  Sub init()
  Label1.Caption = Chr(Int(Rnd * 26) + 49)  /设定Label1随机显示的字母
  speed = Int(Rnd * 100 + 100)    /设定Label1随机显示字母的速度
  Label1.Left = Int(Rnd * Frame1.Width)  /设定Label1代表字母出现的左边位置
  Label1.Top = Frame1.Top    /设定Label1代表字母出现的顶部位置
  End Sub

  3、编写init1子程序(用于第二个出现的字母)

  Sub init1()
  Label6.Caption = Chr(Int(Rnd * 26) + 97)  /设定Label2随机显示的字母
  speed = Int(Rnd * 100 + 100)  /设定Label2随机显示字母的速度
  Label6.Left = Int(Rnd * Frame1.Width)  /设定Label2代表字母出现的左边位置
  Label6.Top = Frame1.Top    /设定Label2代表字母出现的顶部位置
  End Sub
  4、双击“开始”按钮并输入下列代码:

  Private Sub Command1_Click()
  init    /调用init子程序
  Timer1.EnabLED = True    /激活Time1控件
  Timer2.Enabled = True    /激活Time2控件
  Command1.Visible = False
  Label5.Caption = 200
  Label4.Caption = 0
  End Sub

  5、双击Form1窗口,并选择“KeyPress”对象,输入下面的用代码:

  Private Sub Form_KeyPress(KeyAscii As Integer)
  If Chr(KeyAscii) = Label1.Caption Then    /校验键盘输入字符和Label1显示的字符
  init
  score = score + 1  /得分加1
  Label4.Caption = score
  End If
  If Chr(KeyAscii) = Label6.Caption Then    /校验键盘输入字符和Label2显示的字符
  init1
  score = score + 1
  Label4.Caption = score    /Label4控件显示得分情况
  End If
  End Sub

  6、双击Form1窗口,并选择“Load”对象,输入下面的用代码:

  Private Sub Form_Load()
  Randomize
  Timer1.Enabled = False    /Time1控件失效
  Timer2.Enabled = False    /Time2控件失效
  End Sub
  7、双击Timer1控件并输入下列代码:

  Private Sub Timer1_Timer()
  Label1.Top = Label1.Top + speed
  If Label1.Top > Frame1.Height Then  /第一个字母超出屏幕范围的时候调用init子程序重新出现一个字母
  init
  End If
  Label6.Top = Label6.Top + speed
  If Label6.Top > Frame1.Height Then  /第二个字母超出屏幕范围的时候调用init1子程序重新出现一个字母
  init1
  End If
  End Sub

  8、双击Timer2控件并输入下列代码:

  Private Sub Timer2_Timer()
  Label5.Caption = Val(Label5.Caption) - 1  /扣除剩余个数中的一个
  If Val(Label5.Caption) <= 0 Then
  Timer1.Enabled = False    /剩余个数小于等于0的时候结束练习
  Label1.Caption = ""    /不显示字母
  Label6.Caption = ""
  Select Case score
  Case Is <= 80
  MsgBox vbCrLf + "别放弃,再来一次!"  /显示信息框
  Case Is < 120
  MsgBox vbCrLf + "成绩不错,加油!"
  Case Is < 150
  MsgBox vbCrLf + "再努力做的更好一些!"
  Case Is > 180
  MsgBox vbCrLf + "好厉害!最高分呀!"
  End Select
  Command1.Visible = True
  Label4.Caption = 0
  Label5.Caption = 200
  Timer1.Enabled = False
  Timer2.Enabled = False
  End If
  End Sub 

  上面就是全部的源代码了,你可以运行试试看。

小蘑菇:呵呵,想测试我的打字速度?那还不是小菜一碟?
  小叮当:嘿嘿,别说大话,先运行一下再说。怎么样,得了多少分?还小菜一碟吗?


小叮当也战江湖—VB程序设计实例七日谈(四)  第1张

  小蘑菇:速度太快了,要是慢一点的话,我肯定能够得高分!
  小叮当:慢一点?慢一点怎么能体现出你的高超技术呢?其实速度可以通过init和init1程序来控制,只要将数值更改的小一些就可以轻轻松松的得到高分了。
  小蘑菇:我想到了一个好办法,先把速度降低,然后自己得一个高分,截图保存之后拿给朋友看看,让他们也测试一下,但是给他们的程序就是速度非常快的,这样就可以大大的刺激他们一下了,哈哈哈哈。

  小叮当:整天就想着这些损人不利己的事情,有空还是真正练习一下自己的指法比较好,省得到时候出丑呢!

版权与免责声明

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

发表评论

接线图网Copyright Your WebSite.Some Rights Reserved. 备案号:桂ICP备2022002688号-2 接线图网版权所有 联系作者QQ:360888349