vb学习7天后遇到的问题

lovezhufei517 2009-12-22 09:53:20
我利用工作业余时间学了点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 j

Image1.Width = 200
Image1.Height = 200

End Sub

Private Sub Timer1_Timer()
Timer1.Interval = 1000 '根据选择的速度下落字体
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个
End If
Next j


End Sub
Private Sub form_keypress(keyascii As Integer)
Image1.Visible = True
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?[/color]
ElseIf keyascii = vbKeyEscape Then
If (MsgBox("你确认要退出吗?", vbOKCancel, "退出") = vbOK) Then
Unload Me
End If
End If

Next j
End Sub
Private Sub form3_keyup(keyascii As Integer) ‘我想实现按键上来的时候,爆炸图片消失,怎么实现
If keyascii = Asc(Label3(j).Caption) Then
Image1.Visible = False


End Sub
...全文
99 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
贝隆 2009-12-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 leftie 的回复:]
Label2.Caption = Record               
Labe12.refresh

[/Quote]
这个值得学习
东方之珠 2009-12-22
  • 打赏
  • 举报
回复
up
饮水需思源 2009-12-22
  • 打赏
  • 举报
回复
Label2.Caption = Record
Labe12.refresh
lovezhufei517 2009-12-22
  • 打赏
  • 举报
回复
太长了吗?怎么没有高手指点阿,语句都是基本的语句,清高手露下脸
king06 2009-12-22
  • 打赏
  • 举报
回复
Option Explicit
Dim Record As Integer
Dim missword As Integer
Dim KeyDown As Boolean

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 j

Image1.Width = 200
Image1.Height = 200
End Sub

Private 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 Sub

Private 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 Sub

Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
KeyDown = False
Image1.Visible = False
End Sub


gz284596265 2009-12-22
  • 打赏
  • 举报
回复
前面两处没有定义全局变量 这是错误原因 相信1楼给你改了
第三处没有完全理解楼主的意思。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧