You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET定时器归0未触发Game Over提示问题求助

问题原因分析
  • 判断计数归0的逻辑没有放在Timer1_Tick事件中,计时器每次触发减1操作后不会执行归0校验,所以触发逻辑永远不会运行
  • 重复声明了over标签变量,第二次声明覆盖了第一次显示“GAME OVER”的标签,最终调用Show方法时展示的是文本为2的错误标签
  • 直接将字符串类型的Label1.Text和数字0做比较,存在类型隐式转换失败的风险
  • 代码存在多余的End Sub语法错误,会导致编译不通过
修复后的完整代码

控件初始化代码(建议放在窗体加载事件中)

Me.Controls.Add(time)
time.Location = New Point(30, 150)
time.BringToFront()
' 仅声明一次游戏结束提示标签
Dim over As New Label() With {
    .Font = New Font("Times New Roman", 13, FontStyle.Bold),
    .Height = 400,
    .Width = 400,
    .ForeColor = Color.Red,
    .Text = "GAME OVER. FAILED TO PRESS BUTTON"
}
Me.Controls.Add(over)
over.Location = New Point(30, 100)
over.BringToFront()
over.Hide()
' 启动计时器
Timer1.Start()

Timer1_Tick事件代码

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    ' 转换为整数运算避免类型错误
    Dim currentCount As Integer = CInt(Label1.Text)
    currentCount -= 1
    Label1.Text = currentCount.ToString()
    ' 归0校验逻辑放在Tick事件内,每次计数更新后自动检查
    If currentCount = 0 Then
        Timer1.Stop()
        Label1.Hide()
        over.BringToFront()
        over.Show()
    End If
End Sub
修复说明
  • 把归0校验逻辑移到了Timer1_Tick事件内部,每次计数更新后自动检查是否到0
  • 删除了重复声明的错误over标签,保留显示游戏结束提示的正确标签
  • 新增了整数类型转换逻辑,避免字符串和数字比较的异常问题
  • 清理了多余的无效End Sub语法,保证代码可以正常编译运行

内容的提问来源于stack exchange,提问作者kylegreene123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 06:18:03