mssgbox通过vb语法中的boolean提醒

时间:2013-08-14 18:43:34

标签: vb.net if-statement boolean

我在vb中制作了一个迷宫(使用mdsn.com上的教程),但是你能够绕过迷宫直接到达终点,所以我尝试添加一个名为cheater的布尔值,当用户退出表单时,它变为true然后给你ua mssgbox说骗子而不是赢家如果你输入我之后用于完成的标签然而它一直给我骗子

继承人关注最后一个子

的代码
Public Class Form

Dim cheater As Boolean

Private BumpSoundPlayer = New System.Media.SoundPlayer("C:\Windows\Media\chord.wav")

Private finishSoundPlayer = New System.Media.SoundPlayer("C:\Windows\Media\tada.wav")

'Private cheaterSoundPlayer = New System.Media.SoundPlayer("C:\Windows\Media\\W\windows_critical_stop.wav")

Public Sub New()
    InitializeComponent()
    MoveToStart()
End Sub

Private Sub MoveToStart()
    Dim startingPoint = Panel1.Location
    startingPoint.Offset(40, 20)
    Cursor.Position = PointToScreen(startingPoint)
    cheater = False
End Sub

Private Sub wall_MouseEnter() Handles Label8.MouseEnter, Label9.MouseEnter, Label7.MouseEnter, Label60.MouseEnter, Label6.MouseEnter, Label59.MouseEnter, Label58.MouseEnter, Label57.MouseEnter, Label56.MouseEnter, Label55.MouseEnter, Label54.MouseEnter, Label53.MouseEnter, Label52.MouseEnter, Label51.MouseEnter, Label50.MouseEnter, Label5.MouseEnter, Label49.MouseEnter, Label48.MouseEnter, Label47.MouseEnter, Label46.MouseEnter, Label45.MouseEnter, Label44.MouseEnter, Label43.MouseEnter, Label42.MouseEnter, Label41.MouseEnter, Label40.MouseEnter, Label4.MouseEnter, Label39.MouseEnter, Label38.MouseEnter, Label37.MouseEnter, Label36.MouseEnter, Label35.MouseEnter, Label34.MouseEnter, Label33.MouseEnter, Label32.MouseEnter, Label31.MouseEnter, Label30.MouseEnter, Label3.MouseEnter, Label29.MouseEnter, Label28.MouseEnter, Label27.MouseEnter, Label26.MouseEnter, Label25.MouseEnter, Label24.MouseEnter, Label23.MouseEnter, Label22.MouseEnter, Label21.MouseEnter, Label20.MouseEnter, Label2.MouseEnter, Label19.MouseEnter, Label18.MouseEnter, Label17.MouseEnter, Label16.MouseEnter, Label15.MouseEnter, Label14.MouseEnter, Label13.MouseEnter, Label12.MouseEnter, Label11.MouseEnter, Label10.MouseEnter, Label1.MouseEnter
    BumpSoundPlayer.play()
    MoveToStart()
End Sub


Private Sub Panel1_MouseLeave() Handles Panel1.MouseLeave
    cheater = True
End Sub

Private Sub FinishLabel_MouseEnter() Handles FinishLabel.MouseEnter
    If cheater = True Then
        'cheaterSoundPlayer.play()
        MessageBox.Show("sneaky little cheater")
        MoveToStart()
    Else
        finishSoundPlayer.play()
        MessageBox.Show("yay you did it")
        'Close()
        MoveToStart()
    End If

End Sub

End Class

1 个答案:

答案 0 :(得分:0)

如上面的评论中所示,退出的控件MouseLeave事件在另一个控件的MouseEnter事件之前触发。下面的解决方案有效(虽然它有点笨拙,可能有一种更优雅的方式)。

在表单中添加一个Timer。

Dim cheaterCount As Integer = 0

Private Sub Panel1_MouseEnter(sender As Object, e As EventArgs) Handles Panel1.MouseEnter
    Timer1.Enabled = False
End Sub

Private Sub Panel1_MouseLeave(sender As Object, e As EventArgs) Handles Panel1.MouseLeave
    Timer1.Enabled = True
End Sub

Private Sub Label1_MouseEnter(sender As Object, e As EventArgs) Handles Label1.MouseEnter
    If cheaterCount >= 1 Then 'this equates to 1/10th second, but you can change this to whatever time interval you think is a valid time frame to move from your panel to the label.
        MsgBox("Cheater")
    Else
        MsgBox("Okay")
    End If
End Sub

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    cheaterCount += 1
End Sub