我利用工作业余时间学了点VB,就学了一个星期,想做个程序,结果调了2个小时也没调出来,请高手给我指点下我的程序为什么有几个不能实现,该怎么修改?
由于我没什么编程基础,可能程序中有很多原则性错误,请不要嘲笑我
我的问题用红色注释标示出来了
1.记录打中的数据为什么显示总部正确
2.记录未打中的数据为什么总线是不正确
3.我退出的时候,怎么能真正退出
4.击中字会出现爆炸图片的,那我keyup的时候消失,该怎么做?程序代码如下:
Private Sub Form_Load()
Dim j As Integer                           '循环统计Label3
Dim keychange As String                    '定义随即出现的字
Record = 0                                 '记录打中的字
missword = 0                               '记录未打中的字
Image1.Visible = False
For j = 0 To Label3.Count - 1
    Label3(j).Top = 0 - 600 * Rnd           '依次设置每个字的高度
    Label3(j).Left = 4800 * Rnd         '依次设置每个字的位置
  
    If Form2.Option1.Value Then
       keychange = Chr((97 - 65 + 1) * Rnd + 65)   '随即出现字母的Assci码,小写字母    ElseIf Form2.Option2.Value Then
       keychange = Chr((122 - 97 + 1) * Rnd + 97)  '随即出现字母的Assci码,大写字母    ElseIf Form2.Option3.Value Then
       keychange = Chr((126 - 48 + 1) * Rnd + 48)  '随即出现字母的Assci码,大写字母,小写字母,数字    End If
 Label3(j).Caption = keychange
Next jImage1.Width = 200
Image1.Height = 200End SubPrivate Sub Timer1_Timer()
Timer1.Interval = 1000                      '根据选择的速度下落字体
For j = 0 To Label3.Count - 1If Form2.Option4.Value Then
Label3(j).Top = Label3(j).Top + 80
ElseIf Form2.Option5.Value Then
Label3(j).Top = Label3(j).Top + 100
ElseIf Form2.Option6.Value Then
Label3(j).Top = Label3(j).Top + 120
End If
If (Label3(j).Top > Form3.Height) Then
    Label3(j).Top = 0 - 500 * Rnd
    missword = missword + 1
    Label4.Caption = missword               '未打中的字也总是错误的,不超过6,我的label3就6个
End If
Next j
End Sub
Private Sub form_keypress(keyascii As Integer)
Image1.Visible = True
For j = 0 To Label3.Count - 1If keyascii = Asc(Label3(j).Caption) Then
   Form3.Image1.Top = Label3(j).Top - 10      '调用图片显示爆炸效果
   Form3.Image1.Left = Label3(j).Left - 10
   Label3(j).Top = 0 - 500 * Rnd
   Record = Record + 1
   Label2.Caption = Record                 '显示打中的为什么总是1?[/color]
   ElseIf keyascii = vbKeyEscape Then
      If (MsgBox("你确认要退出吗?", vbOKCancel, "退出") = vbOK) Then
         Unload Me
      End If
 End IfNext j
End Sub
 Private Sub form3_keyup(keyascii As Integer)        ‘我想实现按键上来的时候,爆炸图片消失,怎么实现
 If keyascii = Asc(Label3(j).Caption) Then
 Image1.Visible = False 
 End Sub

解决方案 »

  1.   

    Option Explicit
    Dim Record As Integer
    Dim missword As Integer
    Dim KeyDown As BooleanPrivate Sub Form_Load()
        Dim j As Integer                          '循环统计Label3
        Dim keychange As String                    '定义随即出现的字
        Record = 0                                '记录打中的字
        missword = 0                              '记录未打中的字
        Image1.Visible = False
        For j = 0 To Label3.Count - 1
            Label3(j).Top = 0 - 600 * Rnd          '依次设置每个字的高度
            Label3(j).Left = 4800 * Rnd        '依次设置每个字的位置
          
            If Form2.Option1.Value Then
              keychange = Chr((97 - 65 + 1) * Rnd + 65)  '随即出现字母的Assci码,小写字母
        
            ElseIf Form2.Option2.Value Then
              keychange = Chr((122 - 97 + 1) * Rnd + 97)  '随即出现字母的Assci码,大写字母
        
            ElseIf Form2.Option3.Value Then
              keychange = Chr((126 - 48 + 1) * Rnd + 48)  '随即出现字母的Assci码,大写字母,小写字母,数字
        
            End If
            Label3(j).Caption = keychange
        Next j
        
        Image1.Width = 200
        Image1.Height = 200
    End SubPrivate Sub Timer1_Timer()
        Timer1.Interval = 1000                      '根据选择的速度下落字体
        
        Dim j As Long
        For j = 0 To Label3.Count - 1
            If Form2.Option4.Value Then
                Label3(j).Top = Label3(j).Top + 80
            ElseIf Form2.Option5.Value Then
                Label3(j).Top = Label3(j).Top + 100
            ElseIf Form2.Option6.Value Then
                Label3(j).Top = Label3(j).Top + 120
            End If
            
            If (Label3(j).Top > Form3.Height) Then
                Label3(j).Top = 0 - 500 * Rnd
                missword = missword + 1
                Label4.Caption = missword
                '未打中的字也总是错误的,不超过6,我的label3就6个
                '因为每一轮都是6个,没打中继续打,当然会累加,除非限制 字不再下降
            End If
        Next j
    End SubPrivate Sub form_keypress(keyascii As Integer)
        Image1.Visible = True
        Dim j As Long
        For j = 0 To Label3.Count - 1
            If keyascii = Asc(Label3(j).Caption) Then
                Form3.Image1.Top = Label3(j).Top - 10      '调用图片显示爆炸效果
                Form3.Image1.Left = Label3(j).Left - 10
                Label3(j).Top = 0 - 500 * Rnd
                Record = Record + 1
                Label2.Caption = Record   '显示打中的为什么总是1?可能你定义的变量在过程里面,要定义为模块的
            ElseIf keyascii = vbKeyEscape Then
                If (MsgBox("你确认要退出吗?", vbOKCancel, "退出") = vbOK) Then
                  Unload Me
                End If
            End If
        Next j
        
        KeyDown = True
    End SubPrivate Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
        KeyDown = False
        Image1.Visible = False
    End Sub
      

  2.   

    Label2.Caption = Record                
    Labe12.refresh