这是一个随机靶子游戏程序
为了成功运行这个游戏,在窗体上建立一个Picture,作为靶子的活动区域。建立一个标签,背景设置醒目是颜色,代表靶子。另外,要设置一个时钟控件Timer1时钟控件Interval属性设置为1000,在Timer的Timer事件中,产生一个随机数,利用这个随机数的设置靶子的位置,即每隔一秒钟,把靶子产生一个新的随机位置
 对靶子(标签)的单击事件编程,当发生了靶子是单击时间时,说明靶子被打中,此时要对分数进行计数,并计算成功率,具体如下:
'定义模块级变量
'z_num 表示靶子数、tar_num表示打中靶子数、percent表示百分率
'“开始按钮”,对各变量清零,使时钟控件生效,使靶子标签可见
Dim z_num As Integer, tar_num As Integer, percent As Single
Private Sub Command1_Click()
z_num = 0
tar_num = 0
percent = 0
Timer1.Enabled = True
Lbltarget.Visible = TrueEnd Sub
'靶子被打中,打中计数加1,调用Timer事件,重新出现下一个靶子Private Sub Lbltarget_Click()
tar_ num = tar_num + 1
Label4 = tar_num
Call Timer1_TimerEnd Sub'时钟触发事件,产生随机数,确定靶子标签的位置,靶子数加1
'如果靶子数超过10,停止游戏,否则计算打中率Private Sub Timer1_Timer()
X = Rnd * pricture1.Width
Y = Rnd * pricture1.Height
Lbltarget.Top = Y
Lbltarget.Left = X
z_num = z_num + 1
If z_num > 10 Then
Timer1.Enabled = False
Lbltarget.Visible = False
Else
Label2 = z_num
percent = tar_num / z_num
Label6 = percent
End IfEnd Sub以上是原代码可是调试时有错误,我不知道错在什么地方
希望高手可以给点意见
最好是把这个代码写完整在回复给我
谢谢!~~~~

解决方案 »

  1.   

    Option Explicit'定义模块级变量
    'z_num 表示靶子数、tar_num表示打中靶子数、percent表示百分率
    '“开始按钮”,对各变量清零,使时钟控件生效,使靶子标签可见
    Dim z_num As Integer, tar_num As Integer, percent As Single
    Private Sub Command1_Click()
    z_num = 0
    tar_num = 0
    percent = 0
    Timer1.Enabled = True
    Lbltarget.Visible = TrueEnd Sub
    '靶子被打中,打中计数加1,调用Timer事件,重新出现下一个靶子Private Sub Lbltarget_Click()
    tar_num = tar_num + 1
    Label4 = tar_num
    Call Timer1_TimerEnd Sub'时钟触发事件,产生随机数,确定靶子标签的位置,靶子数加1
    '如果靶子数超过10,停止游戏,否则计算打中率Private Sub Timer1_Timer()
    Dim X As Single
    Dim Y As Single
    X = Rnd * (Picture1.ScaleWidth - Lbltarget.Width)
    Y = Rnd * (Picture1.ScaleHeight - Lbltarget.Height)
    Lbltarget.Top = Y
    Lbltarget.Left = X
    z_num = z_num + 1
    If z_num > 10 Then
    Timer1.Enabled = False
    Lbltarget.Visible = False
    Else
    Label2 = z_num
    percent = tar_num / z_num
    Label6 = CStr(percent * 100) & "%"
    End IfEnd Sub
      

  2.   

    Dim z_num As Integer, tar_num As Integer, percent As Single
    Private Sub Command1_Click()
    z_num = 0
    tar_num = 0
    percent = 0
    Timer1.Enabled = TrueLbltarget.Visible = TrueEnd Sub
    '靶子被打中,打中计数加1,调用Timer事件,重新出现下一个靶子Private Sub Lbltarget_Click()
    tar_num = tar_num + 1
    Label4.Caption = tar_num
    End Sub'时钟触发事件,产生随机数,确定靶子标签的位置,靶子数加1
    '如果靶子数超过10,停止游戏,否则计算打中率Private Sub Timer1_Timer()
    Lbltarget.Top = Rnd * pricture1.Height
    Lbltarget.Left = Rnd * pricture1.Width
    z_num = z_num + 1
    If z_num > 10 Then
      Timer1.Enabled = False
      Lbltarget.Visible = False
    Else
      Label2.Caption = z_num
      percent = tar_num / z_num
      Label6.Caption = percent
    End If
    End Sub
    简单修改了一下,你试一试。
    注意Timer1.Enabled = True时,Timer1会按照1秒的间隔触发 Timer1_Timer()事件,无需
    再调用。
      

  3.   

    大哥门好想不行我把你们的方法都试了一下可是哈是不能执行
    为什么啊编译时出现这样的提示实时错误'424'
    要求对象然后我点调试
    显示
    Lbltarget.Visible = True
    我真的不知道这是为什么
    请给我帮助谢谢!~~~~
      

  4.   

    另一位说的
    我编译的时候出现这样的提示
    编译错误
    变量未定义
    点确定后又出现
    Private Sub Command1_Click()昏
    我不知道啊
    求老大门帮帮我啊
    谢谢了
      

  5.   

    首先把你自己的代码全部注释,然后把我的代码全部拷贝到代码区。
    在form上放一个PictureBox,一个CommandButton,四个Label,其中代表靶子的Label的Name属性为Lbltarget,代表打中靶子数量的label的Name属性为Label4,代表靶子数的Label的Name属性为Label2,代表百分比的Label的Name属性为Label6,然后再放上一个Timer控件。这样就可以运行了。我可是按照楼主的所订的名称和控件放置的,无语中。另外,请楼主在以后的编程中选定工具菜单的选项中的要求变量声明这项,会省去不少心力。在楼主的源代码中连picture1写成pricture1都没有发现。这个选项会在代码的开始加入Option Explicit这句话,表示变量一定要声明后才能使用。
      

  6.   

    //实时错误'424'
    //要求对象//然后我点调试
    //显示
    //Lbltarget.Visible = True
    你检查一下你的lable控件的名称是不是“Lbltarget”
      

  7.   

    rainstormmaster(暴风雨 v2.0) 
    大哥,并不是你说的错误jykuwang(三毛) 
    大哥,我当然是学VB的为什么这样问?yunyu97() 
    大哥谢谢你了,真的很谢谢你我知道了,今后还要你多多帮助我
    谢谢了
    呵呵
    谢谢!~~~~
      

  8.   

    //rainstormmaster(暴风雨 v2.0) 
    大哥,并不是你说的错误把程序发给我,我帮你看看:[email protected]