我要投稿
  • 您当前的位置:365bet官方 -> 技术教程 -> 软件开发教程 -> Java教程 -> 教程内容
  • [ 收藏本页教程 ]
  • 用VB6.0设计一个打字练习软件Java教程

    教程作者:佚名    教程来源:不详   教程栏目:Java教程    收藏本页
      1) 首先新建一EXE工程

      在工程菜单-部件菜单中选择MICROSOFT COMMON DIALOG CONTROL 6.0(SP3)和MICROSOFT WINDOWS COMMON CONTROLS 6.0(SP4)两项,在工程菜单-引用菜单中选择MICROSOFT SCRIPTING RUNTIME项,然后保存工程,再在窗体中加入控件(部分),列表如下:

    菜单NAME:mnuPracticeCAPTION:Practice子菜单NAME:mnuStartCAPTION:Start Practice NAME:mnuPauseCAPTION:Pause Practice NAME:mnuResumeCAPTION:Resume Practice NAME:mnuCustomCAPTION:Custom Practice NAME:mnuRestartCAPTION:Restart Practice NAME:mnuExitCAPTION:Exit状态栏NAME:Stautsbar1 文本框NAME:Text1(0)INDEX:0TABSTOP:FALSEVISIBLE:FALSE标签 NAME:Label1(0) INDEX:0VISIBLE:FALSEBACKSTYLE:0图片NAME:Picture1TABSTOP:FALSE时钟NAME:Timer1INTERVAL:1000 ENABLED:FALSE对话框NAME:CommonDialog1  工具栏NAME:Toolbar1  (备注:文本框控件Text1(0)和Label1(0)放入Picture1控件中)

      2) 加入如下代码:

    rowcount是练习文本的行数,totalchar是练习文本的总字数
    Dim rowcount, totalchar As Integer
    mode是当前练习状态:start为正在联系,pause中止练习,否则为等待状态
    filename为练习文本文件的文件名
    Dim mode, filename As String
    playsec为当前练习所用的秒数
    Dim playsec As Long
    ------------------------------------------
    Private Sub Form_Load()
     Dim i As Integer
     调整Picture1控件的位置
     Picture1.Top = Toolbar1.Top + Toolbar1.Height + 10
     Picture1.Height = Picture2.Top - Picture1.Top
     显示当前练习状态
     StatusBar1.Panels(1).Text = "Status : Waiting..."
    End Sub
    ------------------------------------------
    Private Sub Form_Unload(Cancel As Integer)
     如果练习文本行数大于0,则将动态生成的输入文本框和标签控件卸载
     If rowcount > 0 Then
      Dim i As Integer
      For i = 1 To rowcount
       Unload Label1(i)
       Unload Text1(i)
      Next
     End If
    End Sub
    ---------------------------------------------------------
    Private Sub mnuCustom_Click() 自定义练习内容
     On Error GoTo Error_Exit
     弹出练习文本文件选择框
     CommonDialog1.ShowOpen
     如果选择的文件名为空,则退出
     If CommonDialog1.filename = "" Then Exit Sub
     如果当前练习状态不是等待状态,则停止当前练习
     Timer1.Enabled = False
     playsec = 0
     Dim i As Integer
     For i = 1 To rowcount
      Unload Label1(i)
      Unload Text1(i)
     Next
     filename = CommonDialog1.filename
     开始新的练习,练习文本为用户选择的文本文件
     Call mnuStart_Click
     Exit Sub
    Error_Exit:
     Exit Sub
    End Sub
    ------------------------------------------
    Private Sub mnuExit_Click() 退出程序
     Timer1.Enabled = False
     Unload Me
    End Sub
    ------------------------------------------
    Private Sub mnuPause_Click() 中止练习
     如果当前正在练习,
     If mode = "start" Then
      Timer1.Enabled = False
      mode = "pause"
      Picture1.Enabled = False
      StatusBar1.Panels(1).Text = "Status : Pausing..."
     End If
    End Sub
    ---------------------------------------------
    Private Sub mnuRestart_Click() 重新练习
     如果没有开始练习,则退出;否则先卸载动态生成的控件数组,
     然后再开始练习
     If mode = "" Then Exit Sub
      Dim i As Integer
      mode = ""
      For i = 1 To rowcount
       Unload Label1(i)
       Unload Text1(i)
      Next
     Call mnuStart_Click
    End Sub
    ---------------------------------------------
    Private Sub mnuResume_Click() 继续练习
     如果练习为中止状态,则继续练习
     If mode = "pause" Then
      Timer1.Enabled = True
      mode = "start"
      Picture1.Enabled = True
      StatusBar1.Panels(1).Text = "Status : Starting..."
     End If
    End Sub
    ---------------------------------------------
    Private Sub mnuStart_Click()
     如果当前正在练习,则退出此过程
     If mode <> "" Then Exit Sub
     申明一个文本流和一个文件系统对象
     Dim t As TextStream
     Dim i As Integer
     Dim b As FileSystemObject
     创建一个文件系统对象
     Set b = New FileSystemObject
     Dim temp As String
     如果当前没有练习文本文件,则采用默认的文本文件进行练习
     If filename = "" Then filename = App.Path + "\article\a.txt"
     读一个文本文件
     Set t = b.OpenTextFile(filename, ForReading, False)
     i = 0: totalchar = 0
     如果没有读完,则继续读
     Do While Not t.AtEndOfStream
      temp = Trim(t.ReadLine)
      如果当前读的行数据去掉空格后为空,则忽略此行数据
      If temp <> "" Then
       i = i + 1
       动态生成控件数组,用于显示练习文本数据和创建输入栏
       Load Label1(i)
       Label1(i).Top = 500 * (i - 1) + i * 5
       Label1(i).Left = 20
       Label1(i).Caption = temp
       如果显示的练习文本长度大于Picture1的长度,
       则截掉多余的文本
       Do While Label1(i).Width + Label1(i).Left > Picture1.Width
        Label1(i).Caption = Left(Label1(i), Len(Label1(i).Caption) - 1)
       Loop

       Label1(i).Visible = True
       Load Text1(i)
       Text1(i).Top = Label1(i).Top + Label1(i).Height + 20
       Text1(i).Left = 20
       Text1(i).Width = Picture1.Width - 20
       Text1(i).Visible = True
       Text1(i).Text = ""
       把输入焦点定位到第一个输入框中
       Text1(1).SetFocus
       统计练习文本总字数
       totalchar = Len(Label1(i).Caption) + totalchar
       如果练习文本的高度大于Picture1的高度,则不再继续从文本文件中读数据而退出
       If Picture1.Height - (Text1(i).Top + Text1(i).Height) < 500 Then Exit Do
        End If
      Loop
      如果文本文件为空,则退出
      If i = 0 Then
       t.Close
       Exit Sub
      End If
      t.Close
      练习开始,并且计时开始
      rowcount = i
      playsec = 0
      Timer1.Enabled = True
      mode = "start"
      StatusBar1.Panels(1).Text = "Status : Starting..."
    End Sub
    ------------------------------------------
    Private Sub Text1_Change(Index As Integer)
     If mode = "pause" Then Call mnuResume_Click
      如果当前行的打字字数等于当前练习行字数,则跳到下一打字输入行
      如果练习完毕,则弹出对话框,让玩家选择是否存储打字速度数据
      If LenB(Text1(Index).Text) = LenB(Label1(Index).Caption) Then
       If Index = rowcount Then
        Timer1.Enabled = False
        mode = ""
        Dim i, j, rightchar As Integer
        rightchar = 0
        统计每一行打字的正确字数
        For i = 1 To rowcount
         For j = 1 To Len(Label1(i).Caption)
          If Mid(Text1(i).Text, j, 1) = Mid(Label1(i).Caption, j, 1) Then rightchar = rightchar + 1
         Next
        Next
      If MsgBox("finish task!Correct Percent:" & Int((rightchar / totalchar) * 100) & "%" + vbCrLf + vbCrLf + "Do you want to save this practice result?", vbYesNo + vbInformation, "Hint") = vbYes Then
    将打字速度结果存入文本文件中
      Open App.Path + "\count.txt" For Append As #1
      If playsec = 0 Then
       Print #1, 0
      Else
       Print #1, CStr(totalchar / playsec)
      End If
      Close #1
    End If
     计时清0
      playsec = 0
     Else
     Index = Index + 1
     Text1(Index).SetFocus
     End If
     End If
    End Sub
    ------------------------------------------
    Private Sub Text1_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer)
     在打字输入框中屏蔽掉方向键和删除键等,以避免玩家误操作
     If KeyCode = vbKeyLeft Then KeyCode = 0
     If KeyCode = vbKeyRight Then KeyCode = 0
     If KeyCode = vbKeyUp Then KeyCode = 0
     If KeyCode = vbKeyDown Then KeyCode = 0
     If KeyCode = vbKeyDelete Then KeyCode = 0
     If KeyCode = vbKeyHome Then KeyCode = 0
     If KeyCode = vbKeyEnd Then KeyCode = 0
    End Sub
    -------------------------------------------
    Private Sub Text1_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
     如果用鼠标点击输入框,则作为作弊行为,重新开始练习
     MsgBox "Dont cheat youself,Please studying carefully!" + vbCrLf + vbCrLf + "[Suggestion : This Way is to advantage you]", vbOKOnly + vbInform
    我要投稿   -   广告合作   -   关于本站   -   友情连接   -   网站地图   -   联系我们   -   版权声明   -   设为首页   -   加入收藏   -   网站留言
    Copyright © 2009 - 20012 www.www.ct131.com All Rights Reserved.365bet官方 版权所有