我利用工作业余时间学了点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.记录打中的数据为什么显示总部正确
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
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
Labe12.refresh